【问题标题】:How do i fix this? (Simple "Rotation" Script)我该如何解决? (简单的“旋转”脚本)
【发布时间】:2019-01-24 05:48:31
【问题描述】:

所以我有这个脚本可以围绕我的“角色”旋转一个点,它一直有效,直到我使用画布 ui 元素添加了一个小地图,现在只在屏幕的左下角有效。 Here you can see more clearly what im talking about.

这是我的脚本:

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;
    }
}

【问题讨论】:

  • 看起来 Aim 或 AimAxis 可能已移动到世界坐标中的 [0,0]。
  • “我该如何解决这个问题?” 可能适用于在 SO 上提出的所有问题中超过一半的标题。您的头衔是您将问题“推销”给潜在回答者的机会。请使其与您的问题相关
  • 您可以使用 transform.LookAt,或者从四元数获取 lookatDirection,然后从那里进行旋转,而不是分配给 transform.up。

标签: c# unity3d game-development


【解决方案1】:

我愿意打赌你的小地图使用第二个摄像头,对吗?两个相机都有 MainCamera 标签吗?如果是这样,那么调用 Camera.main 的代码对于它实际使用的相机将具有未定义的行为。最有可能的是,它使用小地图相机进行 ScreenToWorldPoint 调用,这会给您带来意想不到的行为。

您需要做的是 (a) 从小地图相机对象中删除 MainCamera 标记,或 (b) 在脚本中添加相机引用,并直接在代码中引用它。

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2018-09-06
    • 2019-12-03
    • 2021-03-22
    • 2023-01-03
    相关资源
    最近更新 更多