Unity迷你高尔夫游戏:鼠标坐标到球坐标?

时间:2018-12-01 02:52:15

标签: unity3d

我正在Unity中创建一个迷你高尔夫游戏。射击球的机制应该是单击和拖动机制。我希望球保持在与运动场相同的y轴上。根据我所拥有的,球的y轴保持不变,但是球的x和z点没有跟随我的鼠标移动。它们当前确实围绕LaunchPoint的SphereCollider旋转,但是球没有与鼠标配对。我一直在寻找解决方案,但是我没有像Unity那样的Camera经验,所以它们无法帮助我理解一切。

这是我的代码:

void Update () {
    // If ball is not in aimingmode, dont run this code
    if (!aimingMode) return;

    // Get the current mouse position in 2D screen coordinates
    Vector3 mousePos2D = Input.mousePosition;
    mousePos2D.y = launchPos.y;


    // Find the delta from the launchPos to the mousePos2D
    Vector3 mouseDelta = mousePos2D - launchPos;
    // Limit the mouse delta to the radius of the spherecollider
    float maxMagnitude = this.GetComponent<SphereCollider>().radius;
    if(mouseDelta.magnitude > maxMagnitude)
    {
        mouseDelta.Normalize();
        mouseDelta *= maxMagnitude;
    }

    // Move the ball to this new position
    Vector3 projPos = launchPos + mouseDelta;
    projectile.transform.position = projPos;

    if (Input.GetMouseButtonUp(0))
    {
        // The mouse has been released
        aimingMode = false;
        projectileRigidbody.isKinematic = false;
        projectileRigidbody.velocity = -mouseDelta * velocityMult;
        projectile = null;
    }
}

解决方案是否与ScreenToWorldCoordinates有关?我尝试使用此方法,但是遇到了一个错误,我认为是关于相机的错误:“对象引用未设置为对象的实例”。 (注意:相机处于透视模式)。我用于此操作的确切行是:

Vector3 mousePos3D = Camera.main.ScreenToWorldPoint(mousePos2D);

有人可以解释如何使球坐标成为鼠标的坐标吗?

编辑:嗯,该错误是一个令人尴尬的明显错误。我已经以某种方式更改了MainCamera的标签。

0 个答案:

没有答案