簡體   English   中英

相機僅在玩家的Z軸上跟隨玩家Unity 3D

[英]Camera follow the player only on his Z axis Unity 3D

我使腳本跟隨攝像機跟隨玩家,但我不希望它跟隨他的X軸。 因此,它只能在玩家的Z軸上平穩地跟隨玩家。 有什么建議么?

相機腳本:

public Transform Ball;
public float SmoothSpeed = 0.125f;
public Vector3 offset;
bool MoveCamera = true;


void Start () {

}


public void FixedUpdate () {

    if(MoveCamera == true){

        Vector3 desiredPosition = Ball.position + offset;
        Vector3 SmoothedPosition = Vector3.Lerp(transform.position, desiredPosition, SmoothSpeed);
        transform.position = SmoothedPosition;
    }


    if (transform.position.z >= 2f)
    {
        MoveCamera = false;
    }
}

只更改z分量呢?

public void FixedUpdate () {

    if(MoveCamera == true){

       Vector3 desiredPosition = new Vector3(0, Ball.position.y + offset.y, Ball.position.z + offset.z);
        Vector3 SmoothedPosition = Vector3.Lerp(transform.position, desiredPosition, SmoothSpeed);
        transform.position = SmoothedPosition;
    }


    if (transform.position.z >= 2f)
    {
        MoveCamera = false;
    }
}
    public gameObject toFollow;
    Vector3 camDistance;
    public void Start(){
    camDistance = toFollow.transform.position-Camera.main.position;
    }

    public void Update(){
    Vector3 following = new Vector3(Camera.main.x,Camera.main.z,toFollow.transform.position.z-Camera.main.position.z);

    Camera.main.transform.position = following;

}

我只是把這些放在一起,所以可能需要一些調整,但是它應該可以使您到達需要的位置。 或者...。您可以向相機添加剛體,然后在檢查器中選中x和y軸上的約束框。 這將使其僅在z軸上移動(如果您沿此路線行駛,請記住也要為相機剛體轉動重力)

2019年的任何人都需要相機使其3D角色偏離特定位置嗎? 這是一個簡單的解決方案! 將此腳本附加到要跟隨播放器的攝像機。 在Unity編輯器中選擇播放器作為目標。

該腳本將攝像機的新位置設置為

(編輯:LaTeX到哪里去了?)

$v = <targetPosition.x + xOffset, targetPosition.y + yOffset, targetPosition.z + zOffset>$

該腳本的優點:

  • 即使角色轉彎,相機方向也不會改變(因為相機沒有作為播放器的父級)。
  • 無論玩家處於什么位置都可以工作

局限性:-由於攝像機的方向是固定的,因此您需要確保角色不會被風景遮擋。 -這種相機控制方式最適合於第三人稱正投影。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour
{

    public Transform target;
    Vector3 targetPos;

    void Update()
    {
        targetPos = target.position;
        transform.position = new Vector3(targetPos.x + 10f, targetPos.y + 8.571067812f, targetPos.z - 10f);
        // transform.LookAt(target.transform);
    }
}

我的用例需要正交投影。 正射角通常為30度的傾斜角,因此我的偏移量是后10個單位,超過10個單位,並且上斜邊的一半(即,上10 * sqrt2 * 1/2)。 我也將y位置增加了角色的高度(1.5個單位),我認為這將為相機目標提供更好的中心。 這給出了大約8.571067812的y偏移。

暫無
暫無

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

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