簡體   English   中英

跟隨相機XNA 4.0 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM