unity3d 我正在做一个关于团结的游戏项目,我被相机的问题卡住了

k2fxgqgv  于 2023-02-16  发布在  其他
关注(0)|答案(2)|浏览(169)

它有两个摄像头Angular 。第一人称视角用于游戏体验,自上而下视角用于2D游戏体验。但在自上而下视角下,我无法计算出摄像头相对于玩家的旋转Angular 。
我为主(自顶向下)摄像机视图编写了以下脚本。

public class FollowPlayer : MonoBehaviour
{
    public GameObject player;
    private Vector3 offset = new Vector3(0f, 24.953f, -0f);

    // Start is called before the first frame update
    void Start()
    {
    
    }

    // Update is called once per frame
    void LateUpdate()
    {
        transform.position = player.transform.position + offset;
    }
}`

我试过transform.rotation = player.transform.rotation;,但它不工作,因为相机是在播放器的顶部。如果我能以某种方式做transform.rotation = player.transform.rotation + X axis 90 degree;,这将是完美的,但我不知道如何做到这一点。

2w3kk1z5

2w3kk1z51#

如果我没理解错的话,你想用你的第二个摄像头从上方跟随玩家。保留一些灵活性,我认为最好的选择是Unity内置的Transform.LookAt(target)方法(LookAt),它会自动旋转一个对象(在你的例子中是摄像头),使其面向目标。
因此,您可以在Update中执行以下操作,假设您的脚本已连接到Camera。否则,请将transform替换为Camera.main.transform

transform.LookAt(player);

注意:如果你打算让你的摄像头一直固定在你的播放器上方,那么你只需要执行一次LookAt就足够了,例如在Start中,然后将摄像头作为一个孩子连接到播放器上。如果你的摄像头不随你的播放器在世界上移动,但你希望它无论如何都能聚焦播放器,请在Update中执行。希望我解决了你的问题:)

up9lanfz

up9lanfz2#

我的问题已经解决了。我试图旋转错误的轴。我的错。

mouseInput = Input.GetAxis("Mouse X");
transform.Rotate(Vector3.forward * speed * -mouseInput);

我需要从用户那里得到鼠标输入,并根据它来改变Z轴。游戏现在运行良好。

相关问题