[英]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 Camera
和Player
)必须在player
object 内居中。
如何解决这个问题? 将Main Camera
和Player
的Transform->Position
设置为0,0,0
。 然后调整Main Camera
和Player
的唯一高度(所以y
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.