//============================================================ // <T>向左/向右旋转</T> // // @param angle 角度 //============================================================ public void DoYaw(float angle) { SFloatVector3 direction = new SFloatVector3(); // 旋转Y轴 SDxMatrix matrix = new SDxMatrix(); matrix.ry = angle; matrix.UpdateForce(); matrix.Transform3x3Vector3(direction, _direction); // 旋转方向 direction.Normalize(); _direction.Assign(direction); UpdateTarget(); }
//============================================================ // <T>向上/向下旋转</T> // // @param angle 角度 //============================================================ public void DoPitch(float angle) { SFloatVector3 axis = new SFloatVector3(); SFloatVector3 axisUp = new SFloatVector3(0, 1, 0); axisUp.Cross(_direction, axis); DxMatrix dxMatrix = DxMatrix.RotationAxis(new Vector3(axis.X, axis.Y, axis.Z), angle); SFloatVector3 direction = new SFloatVector3(); // 旋转Y轴 SDxMatrix matrix = new SDxMatrix(); matrix.AssignNative(dxMatrix); matrix.UpdateData(); matrix.Transform3x3Vector3(direction, _direction); // 旋转方向 direction.Normalize(); _direction.Assign(direction); UpdateTarget(); }