簡體   English   中英

當我在 Unity 中的 Y 軸上跳躍時,如何讓我的相機停止跟隨我的玩家?

[英]How can I get my camera to stop following my player when I jump on the Y axis in Unity?

真快。 我正在制作一個 2D 游戲,我的玩家沿着 Y 軸向下移動。 沒有什么能讓播放器恢復原狀,所以我想將我的相機鎖定在播放器上。 當我的玩家跳躍時,相機跟隨這基本上是我試圖阻止的,但我似乎無法找到一個“簡單”的解決方案。 如果有人可以幫助我,請提前致謝!

  public Transform target;

  public bool X, Y, Z;

  public float XOffset, YOffset, ZOffset;

  void Update()
  {
        transform.position = new Vector3(
            (X ? target.position.x + XOffset : transform.position.x),
            (Y ? target.position.y + YOffset : transform.position.y),
            (Z ? target.position.z + ZOffset : transform.position.z));

  }

Y為真時,y 分量是當前 y 位置和目標的 y 位置加上偏移量的最小值。

public Transform target;

public bool X, Y, Z;

public float XOffset, YOffset, ZOffset;

void Update() 
{ 
    Vector3 targetPos = target.position;
    Vector3 currentPos = transform.position;

    transform.position = new Vector3(
            X ? targetPos.x + XOffset : currentPos.x, 
            Y ? Mathf.Min(currentPos.y, targetPos.y + YOffset) : currentPos.y,
            Z ? targetPos.z + ZOffset : currentPos.z);
}

另一種方法是在玩家在地面上的每一幀更新一個 gounded_y 變量,並將其用作相機 y 的最小值或最大值(取決於方向)。 這樣,如果玩家在跳躍后跌倒,凸輪將跟隨,但在跳躍過程中永遠不會向上跟隨。

您可以存儲相機的最后變換位置並檢查它是否比以前高。 然后你可以根據它改變Y值。

using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    Vector3 LastCameraPosition = Vector3.positiveInfinity;

    public Transform target;

    public bool X, Y, Z;

    public float XOffset, YOffset, ZOffset;

    void Update()
    {

        if (target.position.y < LastCameraPosition.y)
        {
            LastCameraPosition = target.position;
            Y = true;
        }
        else
        {
            Y = false;
        }

        transform.position = new Vector3(
       (X ? target.position.x + XOffset : transform.position.x),
       (Y ? target.position.y + YOffset : transform.position.y),
       (Z ? target.position.z + ZOffset : transform.position.z));
    }
}

如果您的播放器總是向下,您可以在相機更新中添加條件

if(character.transform.position.y < camera.transform.position.y){
    camera.transform.position = new Vector3(
            character.position.x + XOffset,
            character.position.y + YOffset,
            character.position.z + ZOffset);
}

當然在這種情況下,相機不允許成為玩家的子對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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