日期:2014-05-17  浏览次数:20909 次

XNA 3D 抛物线的算法
请各位大虾们,帮帮忙:
我现在在用XNA编写一个3D坦克的游戏,可是在坦克发射炮弹问题上遇到了瓶颈,现在坦克可以发射炮弹,但是炮弹的运动轨迹是一条直线,我想让它运行抛物线的形式。不知道这个算法该如何写。在此求教给位了

------解决方案--------------------

 public void FireMissile()
        {
            foreach (GameObject missile in missiles)
            {
                if (!missile.alive)
                   
                {
                    missile.velocity = GetMissileMuzzleVelocity();
                    missile.position = GetMissileMuzzlePosition();
                    missile.rotation = missileLauncherHead.rotation;
                    missile.alive = true;
                    break;
                }
            }
        }

      public Vector3 GetMissileMuzzleVelocity()
        {
            Matrix rotationMatrix = Matrix.CreateFromYawPitchRoll(missileLauncherHead.rotation.Y, missileLauncherHead.rotation.X, 0);

            return Vector3.Normalize(Vector3.Transform(Vector3.Forward, rotationMatrix)) * missilePower;
                  
        }

       public Vector3 GetMissileMuzzlePosition()
        {
            return missileLauncherHead.position + (Vector3.Normalize(GetMissileMuzzleVelocity()) * launcherHeadMuzzleOffset);

        }
               
        private float gravity=0.98f;

        void UpdateMissiles()
        {