public AimState(MissileStateController missileStateController, FireMissile fireMissile) : base(missileStateController, fireMissile) { mIsScanTrue = false; mSelfRotateSpeed = 90f; mRelocateRange = 2000f; Trails.SetActive(false); Debug.Log("Aim"); }
public TransposeState(MissileStateController missileStateController, FireMissile fireMissile) : base(missileStateController, fireMissile) { mIsTransposeDone = false; mIsAdjustmentDone = false; mScanTime = 0; mAdjustmentForce = 250f; mCounterForece = 500f; mMaxSpeed = 100; mTransposeSpeed = 1f; mMinAccelerationAngle = 2.5f; Trails.SetActive(true); Debug.Log("Transpose"); }
/// <summary> /// 停止自转,冲刺,上升,预加速, /// </summary> private void Dash() { mX = Mathf.SmoothDamp(mX, -90, ref mRef, mSmootTime, 30, 1f); //弹头朝上 GameObject.transform.rotation = Quaternion.Euler(mX, 0, 0); if (mRigidbody.velocity.magnitude < mDashMaxSpeed || Vector3.Distance(GameObject.transform.position, mAimTankPos) <= mDashMaxDistance || Vector3.Angle(GameObject.transform.forward.normalized, new Vector3(0, 1, 0)) > mMinAccelerationAngle) // 速度,高度,角度,任意条件都满足才进行瞄准 { mRigidbody.AddForce(0, Mathf.Abs(Mathf.Sin(mX)) * mDashForce, 0, ForceMode.Force); } else //到达后冲刺结束,计算得到需要朝向的方向 { mIsDashComplete = true; mMissileTargetDirection = (mAimTankPos - GameObject.transform.position).normalized; Debug.DrawLine(GameObject.transform.position, mAimTankPos, Color.blue, 100f); } ///拖尾效果 if (!Trails.activeSelf) { Trails.SetActive(true); } }