最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity實現(xiàn)移動物體到鼠標點擊位置

 更新時間:2020年08月18日 09:51:16   作者:XxM_J  
這篇文章主要為大家詳細介紹了Unity實現(xiàn)移動物體到鼠標點擊位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Unity實現(xiàn)移動物體到鼠標點擊位置的具體代碼,供大家參考,具體內(nèi)容如下

目的: 移動物體到鼠標點擊處屏幕所對應的空間位置,并使物體正對著點擊的對象,不能傾斜。

首先,需要獲取點擊屏幕所對應的空間位置,這可以通過先獲取屏幕坐標,然后轉(zhuǎn)成空間坐標;也可以通過射線直接獲取到空間位置。

其次 ,移動物體到目的地,可直接通過差值進行移動,使物體看向目標點,不能直接使用LookAt(),因為,該函數(shù)是使物體的前方面向目標點(即物體的forward指向

由物體到目標點的向量,這可能使物體在X,Y,Z方向都產(chǎn)生旋轉(zhuǎn),也就產(chǎn)生了傾斜)。當目標點和物體高度不一致時,比如站著的人 ,讓他走向地面上某一位置,如果使用

LookAt則可能會導致人歪著看向目標點,如下圖所示,而通常我們想要的只是人面向物體的方向。

//物體的正方向只Z的方向,朝向點擊處,夠?qū)⒛P蜁r要調(diào)好
using UnityEngine;
using System.Collections;
 
public class Move : MonoBehaviour {
 
  private Vector3 targetPos;
 // Use this for initialization
 void Start () {
 
 }
 
 // Update is called once per frame
 void Update () {
 
 
    if (Input.GetMouseButtonDown(0))
    {
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
      RaycastHit hit;
      if(Physics.Raycast(ray,out hit,1000.0f)){       
        targetPos = hit.point;
      }
  
      turnForward2(transform, targetPos);
    }
    //transform.LookAt(targetPos);
    transform.position = Vector3.Lerp(transform.position, targetPos, Time.deltaTime);
 
  
 
 }
 
  /// <summary>
  /// 直接用transform.LookAt(targetPos);當目標點和遠點不在一個高度時,會使物體發(fā)生傾斜來看想目標點
  /// 該方法使物體朝向指向的方向,同時保持物體不傾斜,只繞y軸旋轉(zhuǎn)一定角度
  /// </summary>
  /// <param name="origin"></param>
  /// <param name="target"></param>
  void turnForward(Transform origin,Vector3 target) {
 
 
    //Vector3 forward_dir = target - origin.position;
 
    //Quaternion rotate = Quaternion.FromToRotation(origin.forward, forward_dir);
    //float angle = rotate.eulerAngles.y;
    //origin.rotation *= rotate;
 
    //將原坐標和目的坐標映射到XOZ平面,從而過濾掉y軸方向的旋轉(zhuǎn)的影響
    Vector3 t1 = new Vector3(origin.position.x, 0, origin.position.z);
    Vector3 t2 = new Vector3(target.x, 0, target.z);
 
    Vector3 forward_dir = t2-t1;
    Quaternion rotate = Quaternion.FromToRotation(origin.forward, forward_dir);
    float angle = rotate.eulerAngles.y;
    origin.rotation *= rotate;//實現(xiàn)旋轉(zhuǎn)。
  }
 
  /// <summary>
  /// 只繞y軸旋轉(zhuǎn)
  /// </summary>
  /// <param name="origin"></param>
  /// <param name="target"></param>
  void turnForward2(Transform origin, Vector3 target)
  {
 
 
    Vector3 forward_dir = target - origin.position;
 
    Quaternion rotate = Quaternion.FromToRotation(origin.forward, forward_dir);
    float angle = rotate.eulerAngles.y;
    // origin.rotation *= rotate;
    // origin.Rotate(0f, angle, 0f);
    origin.Rotate(Vector3.up,angle);
 
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity ScrollRect實現(xiàn)軌跡滑動效果

    Unity ScrollRect實現(xiàn)軌跡滑動效果

    這篇文章主要為大家詳細介紹了Unity ScrollRect實現(xiàn)軌跡滑動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式

    C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式

    這篇文章主要介紹了C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談C#索引器

    淺談C#索引器

    這篇文章主要簡單介紹C#索引器,索引器使你可從語法上方便地創(chuàng)建類、結(jié)構(gòu)或接口,以便客戶端應用程序可以像訪問數(shù)組一樣訪問它們。編譯器將生成一個 Item 屬性和適當?shù)脑L問器方法,在主要目標是封裝內(nèi)部集合或數(shù)組的類型中,常常要實現(xiàn)索引器,下面我們一起來看看具體內(nèi)容吧
    2021-11-11
  • C#反射(Reflection)詳解

    C#反射(Reflection)詳解

    本文詳細講解了C#中的反射(Reflection),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# SendMail發(fā)送郵件功能實現(xiàn)

    C# SendMail發(fā)送郵件功能實現(xiàn)

    這篇文章主要為大家詳細介紹了C# SendMail發(fā)送郵件功能實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • FileStream常用的屬性與方法總結(jié)

    FileStream常用的屬性與方法總結(jié)

    本篇文章主要是對FileStream常用的屬性與方法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#中進程的掛起與恢復

    C#中進程的掛起與恢復

    這篇文章主要介紹了C#中進程的掛起與恢復操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • C#最簡單的關(guān)閉子窗體更新父窗體的實現(xiàn)方法

    C#最簡單的關(guān)閉子窗體更新父窗體的實現(xiàn)方法

    原理就是將子窗體最為對話框模式彈出,當窗體關(guān)閉或取消時更新主窗體
    2012-11-11
  • C#?漢明距離的算法實現(xiàn)

    C#?漢明距離的算法實現(xiàn)

    漢明距離是用來衡量兩個等長字符串之間差異的度量指標,本文主要介紹了C#?漢明距離的算法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • C#(4.0)不常見的語法

    C#(4.0)不常見的語法

    今天工作遇到4.0新增語法 不解 請教 遂知,簡單的整理下,需要的朋友可以參考下
    2012-02-02

最新評論

泗阳县| 泽州县| 长白| 喜德县| 邻水| 洪江市| 双江| 双鸭山市| 高陵县| 无锡市| 来宾市| 沧州市| 隆化县| 阿拉善左旗| 阳东县| 中西区| 雷州市| 榆林市| 竹溪县| 苏尼特左旗| 泽州县| 五河县| 辽宁省| 都昌县| 巴南区| 石嘴山市| 连江县| 双桥区| 巫山县| 师宗县| 抚州市| 衡阳市| 九龙县| 永胜县| 南皮县| 巴马| 康定县| 阳新县| 衡阳县| 孙吴县| 原平市|