繁体   English   中英

Unity 3d,将对象指向鼠标(3d空间)

[英]Unity 3d, point object towards mouse (3d space)

我搜索了一会儿,但我不知道如何解决这个讨厌的错误。 我使用的是自顶向下的视图(指向-z),基本上是2d,带有3d对象和处于透视模式的相机。

当所有东西都在同一平面上移动时,我需要将对象朝向鼠标,忽略z方向。

我正在使用以下代码:

 Vector3 mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 1f));
 mouseToWorld.z = 0f;
 Vector3 difference = mouseToWorld - transform.position;
 difference.Normalize();
 float angle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
 transform.rotation = Quaternion.Euler(0f, 0f, angle - 90);

不幸的是,它仅在物体静止时才起作用,并且在速度> 0时就破裂。

任何提示将不胜感激:)

ps我将1加到z,然后将其重置,因为否则,无论我将指针移到何处,mouseToWorld始终为0。

可能是因为速度向量和鼠标方向不同而中断了。

以下脚本将使箭头跟随鼠标,它与您的鼠标基本相同,除了它还会更新位置:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowMouse : MonoBehaviour {
    public float moveSpeed = 0.01f;
    // Use this for initialization
    void Start () {
    }

  // Update is called once per frame
  void Update () {
        transform.position = Vector2.Lerp(transform.position, Camera.main.ScreenToWorldPoint(Input.mousePosition), moveSpeed);

        Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;
        difference.Normalize();
        float rotation_z = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
        transform.rotation = Quaternion.Euler(0f, 0f, rotation_z);
    }
}

感谢您的回答! 我发现您需要将播放器和相机之间的距离减去鼠标的初始位置:

Vector3 mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition-新的Vector3(0,0,Camera.main.transform.position.z));

这是工作脚本:

    Vector3 mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition - new Vector3(0, 0, Camera.main.transform.position.z));
    //Debug.DrawLine(transform.position, mouseToWorld);
    mouseToWorld.z = 0f;
    Vector3 difference = mouseToWorld - transform.position;
    difference.Normalize();

    float angle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0f, 0f, angle - 90);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM