[英]Follow camera XNA 4.0 C#
如何將目標相機變成跟隨相機?
目標:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Flight
{
public class FollowCamera : CCamera
{
public Vector3 Target { get; set; }
public FollowCamera(Vector3 Position, Vector3 Target,
GraphicsDevice graphicsDevice)
: base(graphicsDevice)
{
this.Position = Position;
this.Target = Target;
}
public override void Update()
{
//Missing lines of code used to determine
//the up vector
Vector3 forward = Target - Position;
Vector3 right = Vector3.Cross(forward, Vector3.Up);
Vector3 up = Vector3.Cross(right, forward);
this.View = Matrix.CreateLookAt(Position,
Target, up);
}
}
}
我確實有線索使用此代碼行進行了一些修改,並增加了相機應位於目標后面多遠的長度。 這行代碼使我的飛船繞過屏幕,現在我需要確保攝像頭隨飛船移動。 請幫助
this.local = Matrix.CreateFromYawPitchRoll(orientation.Y, orientation.X, orientation.Z) * Matrix.CreateTranslation(position.X, position.Y, position.Z) * this.local;
您必須將攝像頭安裝到船上,計算攝像頭位置並以其位置為目標
interface IPositionable { Vector3 Position }
class FollowCamera{
public IPositionable ObjectToFollow;
public FollowCamera(Vector3 RelativePosition)
{
this.RelativePosition = relativePosition
}
public override void Update()
{
//Missing lines of code used to determine
//the up vector
Vector3 forward = Target - Position;
Vector3 right = Vector3.Cross(forward, Vector3.Up);
Vector3 up = Vector3.Cross(right, forward);
Position = ObjectToFollow.Position - RelativePosition;
Target = ObjectToFollow.Position;
this.View = Matrix.CreateLookAt(Position,
Target, up);
}
}
如果考慮船舶的前向矢量,並使用緩動函數對該值進行插值,則運動可能會非常涼爽且平滑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.