// 飞行结束 void FlyEnd(GameObject target) { State = EnShellState.InTarget; m_Target = target; if (m_Target == null) { // 飞行超时,落在地面上 Drop2Ground(); } else { switch (m_Target.tag) { case "wall": Drop2Wall(); break; case "ground": Drop2Ground(); break; case "hero": Drop2Hero(); break; default: break; } } Invoke("OnTimerDestroy", Config.SHELL_DESTROY); }
// 子弹发射 public virtual void Shoot(float speed, float range, int damage, bool back) { State = EnShellState.Flying; // 子弹脱离武器 transform.parent = GameMgr.It.ObjRoot; m_Dir = transform.position - Owner.Owner.transform.position; m_Dir = m_Dir.normalized; ShellConfig cfg = Config.ShellCfg[ID - 1]; m_Speed = cfg.speed + speed; m_Range = cfg.range + range; m_BeginPos = transform.position; m_Damage = damage; // 开始飞行,启动碰撞检测 m_Check = true; }
public virtual void OnDetach() { transform.parent = null; State = EnShellState.Flying; }
public virtual void OnAttach(WeaponBase weapon) { Owner = weapon; transform.parent = weapon.transform; State = EnShellState.InWeapon; }