繁体   English   中英

Unity GameObject 绕全局轴旋转

[英]Unity GameObject rotating around global axis

我开始在 3D 中创建我的第一个统一游戏,为此我正在咨询许多教程,但我还没有找到问题的答案。 我创建了一个脚本,可以在移动鼠标时旋转主摄像头。 但是角色不会自行旋转,而是似乎绕着他身体外部的轴旋转我该怎么办? 非常感谢您的答复。

这里的代码:

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

public class visual : MonoBehaviour
{
    public Transform player;
    float sensibility = 100f;
    float rotation;

    void Start ()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void Update ()
    {
        float x = Input.GetAxis("Mouse X") * Time.deltaTime * sensibility;
        float y = Input.GetAxis("Mouse Y") * Time.deltaTime * sensibility;

        rotation -= y;
        rotation = Mathf.Clamp(rotation, -60f, 60f);

        transform.localRotation = Quaternion.Euler(rotation, 0, 0); 

        player.Rotate(Vector3.up * x);
    }
}

我试图搜索正确的代码,但没有找到任何有效代码。

在不知道您的player object 的设置的情况下,这更像是一个猜测:例如,检查播放器 object 的视觉效果是否不在具有偏移量的子项中。 或者正如 derHugo 提到的那样,偏移量可能是错误的。

或者你可能想检查Spaces 默认情况下,当您调用transform.Rotate时,Space 设置为Space.Self ,但也许将其切换为Space.World ,然后看看会发生什么,至少可以给您进一步的提示。


查看链接代码后更新:

橙色标记 object 具有随相机旋转的脚本。 黄色标记的对象( Main CameraPlayer )必须在player object 内居中。

如何解决这个问题? Main CameraPlayerTransform->Position设置为0,0,0 然后调整Main CameraPlayer的唯一高度(所以y )。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM