C# 我该如何解决这个问题?(简单的“旋转”脚本)
所以我有一个脚本,它可以围绕我的“角色”旋转一个点,直到我使用canvas ui元素添加了一个小地图,现在只在屏幕的左下方工作。 这是我的剧本:C# 我该如何解决这个问题?(简单的“旋转”脚本),c#,unity3d,game-development,C#,Unity3d,Game Development,所以我有一个脚本,它可以围绕我的“角色”旋转一个点,直到我使用canvas ui元素添加了一个小地图,现在只在屏幕的左下方工作。 这是我的剧本: using UnityEngine; public class PlayerAim : MonoBehaviour { private void LateUpdate() { AimMouse(); } void AimMouse() { Vector3 mousePos =
using UnityEngine;
public class PlayerAim : MonoBehaviour
{
private void LateUpdate()
{
AimMouse();
}
void AimMouse()
{
Vector3 mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
Vector2 direction = new Vector2(
mousePos.x - transform.position.x,
mousePos.y - transform.position.y
);
transform.up = direction;
}
}
我敢打赌你的小地图用的是第二个摄像头,对吗?两台摄像机都有主摄像机标签吗?如果是这样,那么调用Camera.main的代码将具有未定义的行为,即它实际使用的是哪个摄像头。最有可能的情况是,它正在使用小地图摄像头进行ScreenToWorldPoint呼叫,这会给你带来意想不到的行为
您需要做的是:(a)从minimap camera对象中删除Main camera标记,或者(b)向脚本添加一个camera引用,并直接在代码中引用它。在世界坐标中,Aim或AimAxis可能已移动到[0,0]。如何修复此问题这个标题可能适用于超过一半的问题。你的头衔是你向潜在的回答者“推销”你的问题的机会。请使其与您的问题相关。您可以使用transform.LookAt,而不是指定transform.up,或者从四元数获取lookatDirection,并从那里进行旋转。