Beispiel #1
0
//       public Vector3 OrientationTower
//        {
//            get { return orientationTower; }
//            set
//            {
//                orientationTower = value;
//                Changed = true;
//            }
//        }
//

        public override void Move(float deltaTime)
        {
            Vector3 tempVect = TheGameStatus.ThePlayer.Location - Location;

            if (tempVect.SquaredLength < 100)
            {
                TargetOrientationTower = RotationHelper.AngleFromVectorAroundY(tempVect);

//                TargetOrientationTower = tempVect.CalculateAngle(Vector3.Backward);
//                orientationTower = TargetOrientationTower;

                // This is not quite optimal:
                orientationTower = RotationHelper.RotateTowards(orientationTower, TargetOrientationTower, OrientationTowerMaxSpeed * deltaTime);

//                TargetOrientationTower = RotationHelper.ReverseQuaternion(RotationHelper.GetQuaternionFromDiretion(-tempVect));
//                Quaternion curentQuat = RotationHelper.ReverseQuaternion(RotationHelper.GetQuaternionFromDiretion(-orientation));
//                Quaternion tempQuat = RotationHelper.RotateTowards(OrientQuaternion, TargetOrientationTower, 0.1 * deltaTime);
////                Quaternion tempQuat = RotationHelper.RotateTowards(curentQuat, TargetOrientationTower, 0.314*deltaTime);
//                OrientQuaternion = tempQuat;
//                OrientationTower = RotationHelper.QuaternionToDirectionVector(tempQuat,Vector3.Right);
////                OrientationTower = RotationHelper.QuaternionToDirectionVector(tempQuat,Vector3.Right);
////                OrientationTower = tempVect.Normalize();
            }
        }