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

时间:2016-06-23 20:56:03

标签: c# unity3d 2d sprite

在Unity3d中,我正在尝试使用精灵来“查看”我点击鼠标的位置。 This similar question没有回答我的问题,因为它是针对libgdx而且是Java,而不是C#。虽然这个other question也类似,但它涉及XNA而不是Unity3d。关于Euler和Quaternion旋转的Unity文档中的示例似乎集中在非交互式旋转中。

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

我可能还没有完全处理/理解(看起来像)在3d环境中使用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 个答案:

答案 0 :(得分:0)

在这个例子中有几个选项,你想要看哪个轴的鼠标: https://gist.github.com/unitycoder/5366a610599b503a40e9