12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using UnityEngine;
- using UnityGameFramework.Runtime;
- namespace MetaClient
- {
- /// <summary>
- /// 小行星类。
- /// </summary>
- public class Asteroid : TargetableObject
- {
- [SerializeField]
- private AsteroidData m_AsteroidData = null;
- private Vector3 m_RotateSphere = Vector3.zero;
- #if UNITY_2017_3_OR_NEWER
- protected override void OnInit(object userData)
- #else
- protected internal override void OnInit(object userData)
- #endif
- {
- base.OnInit(userData);
- }
- #if UNITY_2017_3_OR_NEWER
- protected override void OnShow(object userData)
- #else
- protected internal override void OnShow(object userData)
- #endif
- {
- base.OnShow(userData);
- m_AsteroidData = userData as AsteroidData;
- if (m_AsteroidData == null)
- {
- Log.Error("Asteroid data is invalid.");
- return;
- }
- m_RotateSphere = Random.insideUnitSphere;
- }
- #if UNITY_2017_3_OR_NEWER
- protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
- #else
- protected internal override void OnUpdate(float elapseSeconds, float realElapseSeconds)
- #endif
- {
- base.OnUpdate(elapseSeconds, realElapseSeconds);
- CachedTransform.Translate(Vector3.back * m_AsteroidData.Speed * elapseSeconds, Space.World);
- CachedTransform.Rotate(m_RotateSphere * m_AsteroidData.AngularSpeed * elapseSeconds, Space.Self);
- }
- protected override void OnDead(Entity attacker)
- {
- base.OnDead(attacker);
- GameEntry.Entity.ShowEffect(new EffectData(GameEntry.Entity.GenerateSerialId(), m_AsteroidData.DeadEffectId)
- {
- Position = CachedTransform.localPosition,
- });
- GameEntry.Sound.PlaySound(m_AsteroidData.DeadSoundId);
- }
- public override ImpactData GetImpactData()
- {
- return new ImpactData(m_AsteroidData.Camp, m_AsteroidData.HP, m_AsteroidData.Attack, 0);
- }
- }
- }
|