using System.Collections; using System.Collections.Generic; using UnityEngine; public class MonsterController : UnitController { public override UnitType type { get { return UnitType.Monster; } } protected override void Initialize() { base.Initialize(); unitState = GetOrAddUnitComponent(); unitState.Initialize(); unitAnimation = GetOrAddUnitComponent(); unitAnimation.Initialize(); } public override void Update() { base.Update(); } public override void OnHit(CollisionInfo info) { } public override void OnGetHit(CollisionInfo info) { ColliderBox hitbox = info.collider.colliderInfo.collider; Debug.Assert(hitbox.type == ColliderBox.EColliderType.HitBox); if(hitbox.hitResponse == ColliderBox.EHitResponse.Light) { monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam(), true); } else if (hitbox.hitResponse == ColliderBox.EHitResponse.HitAir) { monsterState.ChangeState(MonsterState.EUnitState.HitAir, new MonsterState.HitAirParam()); } else if (hitbox.hitResponse == ColliderBox.EHitResponse.HitInAir) { monsterState.ChangeState(MonsterState.EUnitState.HitInAir, new MonsterState.HitInAirParam(), true); } string path = hitbox.sparkPath; GameObject vfx = ResourceManager.Instance.LoadAsset(path); if(vfx != null) { GameObject go = GameObject.Instantiate(vfx); go.transform.position = center + hitbox.sparkOffset; go.transform.localScale = hitbox.sparkScale; } } public override void OnGetShot(CollisionInfo info) { monsterState.ChangeState(MonsterState.EUnitState.HitLight, new MonsterState.HitLightParam(), true); } public virtual bool IsFacePC() { PCController pc = PCController.instance; float pcX = pc.transform.position.x; float x = transform.position.x; bool isface = pcX > x && isTowardRight || pcX <= x && !isTowardRight; return isface; } // 朝向PC public virtual void FacePC() { if (IsFacePC()) return; PCController pc = PCController.instance; float pcX = pc.transform.position.x; float x = transform.position.x; if (pcX > x) { transform.rotation = Quaternion.Euler(0, 0, 0); } else { transform.rotation = Quaternion.Euler(0, 180, 0); } } public virtual void FaceToFacePC() { PCController pc = PCController.instance; transform.rotation = Quaternion.Euler(0, 180, 0) * pc.transform.rotation; } }