首页 文章

Unity3d:如何让精灵指向鼠标点击?

提问于
浏览
0

在Unity3d中,我正在尝试将精灵放到"look at",我单击鼠标 . This similar question没有回答我的问题,因为它是针对libgdx而且是Java,而不是C# . 虽然这个_1320801也类似,但它涉及到XNA而不是Unity3d . 关于Euler和Quaternion旋转的Unity文档中的示例似乎集中在非交互式旋转中 .

我怀疑射线投射可能是一个可能的解决方案的一部分,但我在(可能是错误的)印象下它最适合碰撞器,我没有使用 . 我现在很难过,需要一些经验丰富的帮助 .

它也可能是我在3D环境中使用2d精灵进行2d点击时不太理解(看起来像是什么) . 我只希望精灵以2d的方式旋转 .

再次,我想在单击鼠标右键时获取鼠标的位置,计算GameObject和鼠标单击之间的角度,然后在鼠标单击时指向对象 .

using UnityEngine;
using System.Collections;

public class LookAtClickPoint2d : MonoBehaviour {

    public Vector3 mousePosition;

    private Camera cam;

    // Use this for initialization
    void Start () 
    {
        cam = Camera.main;
    }

    // Update is called once per frame
    void Update() 
    {

        mousePosition = cam.ScreenToWorldPoint(Input.mousePosition);
        Vector3 targetDir = mousePosition - transform.position;

        if (Input.GetMouseButton (1)) 
        {
            //transform.Rotate(targetDir); /*<---This is @joeblow's suggestion.*/
            /*below is @mgear's suggestion*/
            Vector3 perpendicular = Vector3.Cross(transform.position-mousePosition, Vector3.forward);
            transform.rotation = Quaternion.LookRotation(Vector3.forward, perpendicular);
        }
    }
}

@ mgear的答案让我知道:
enter image description here
虽然在图片中不明显,精灵只指向摄像机视图的中心,而不是鼠标位置 .

@ joeblow的回答让我这样:
enter image description here
当精灵指向鼠标位置时,它们不会保持垂直 . 他们只移动一次!所以它没有回答我的问题 . (我想Unity在某种程度上试图解释3d空间中的鼠标位置,而不是2d . )

1 回答

相关问题