它有两个摄像头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;
,这将是完美的,但我不知道如何做到这一点。
2条答案
按热度按时间2w3kk1z51#
如果我没理解错的话,你想用你的第二个摄像头从上方跟随玩家。保留一些灵活性,我认为最好的选择是Unity内置的
Transform.LookAt(target)
方法(LookAt),它会自动旋转一个对象(在你的例子中是摄像头),使其面向目标。因此,您可以在
Update
中执行以下操作,假设您的脚本已连接到Camera。否则,请将transform
替换为Camera.main.transform
:注意:如果你打算让你的摄像头一直固定在你的播放器上方,那么你只需要执行一次
LookAt
就足够了,例如在Start
中,然后将摄像头作为一个孩子连接到播放器上。如果你的摄像头不随你的播放器在世界上移动,但你希望它无论如何都能聚焦播放器,请在Update
中执行。希望我解决了你的问题:)up9lanfz2#
我的问题已经解决了。我试图旋转错误的轴。我的错。
我需要从用户那里得到鼠标输入,并根据它来改变Z轴。游戏现在运行良好。