簡體   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