国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity2D中讓角色旋轉(zhuǎn)朝向鼠標(biāo)

這篇具有很好參考價值的文章主要介紹了Unity2D中讓角色旋轉(zhuǎn)朝向鼠標(biāo)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

? ?實現(xiàn)該功能,你需要關(guān)注以下的幾個步驟

1.獲取角色的世界坐標(biāo)

2.獲取鼠標(biāo)所在位置的世界坐標(biāo)

3.獲取角色朝向鼠標(biāo)時候的向量

4.獲取上一步驟的向量的反正切的弧度值

5.將弧度值轉(zhuǎn)化為角度

6.將該角度應(yīng)用于角色

——————————分割線——————————

? ?先從第一和第二步驟說起,獲取角色的世界坐標(biāo)非常簡單。如果已經(jīng)將C#腳本掛接到角色的話,那么只需要使用以下代碼,即可獲得玩家的世界坐標(biāo)。

transform.position

? 然后呢,需要獲得鼠標(biāo)的世界坐標(biāo)。這個需要用到C#中的Input類中的mousePosition方法獲取坐標(biāo),但是,這個坐標(biāo)數(shù)據(jù)是獲得鼠標(biāo)在屏幕上的坐標(biāo),并不是在游戲中的世界坐標(biāo),所以需要將它轉(zhuǎn)換為世界坐標(biāo),然后使用一個Vector2的對象來儲存這個世界坐標(biāo)。

Vector2 mousePosition=Camera.main.ScreenToWorldPoint(Input.mousePosition)

? 好了,以上都是鋪墊,后續(xù)才是關(guān)鍵。我們需要聲明一個float類型的變量來獲得角色的世界坐標(biāo)指向鼠標(biāo)的世界坐標(biāo)的這個向量與X軸所形成的角度。在這里我們需要使用Mathf類中的Atan2方法來獲取該向量的反切弧度值,根據(jù)我們的開發(fā)需求,該方法需要傳入向量的Y坐標(biāo)和X坐標(biāo),它會返回一個弧度值,但這并不是我們最終需求的,所以還需要將它轉(zhuǎn)換為角度。具體這么寫。

float Angle= Mathf.Atan2(mousePosition.y - transform.position.y, mousePosition.x -transform.position.x) * Mathf.Rad2Deg;

? 上面的代碼中前面的方法就是將向量轉(zhuǎn)換為與X軸的弧度,那么后面的Mathf.Rad2Deg則會返回一個常數(shù)(180/Pi),將弧度乘以這個常數(shù)可以將弧度化為角度。

? ?

? 那么接下來呢就可以把這個角度應(yīng)用到游戲角色啦!

? 在這里我們需要了解一個名叫Quaternion(四元數(shù))的類,它提供了一個Eluer的方法可以幫助角色進(jìn)行旋轉(zhuǎn),但是前提是你需要告訴角色繞哪個坐標(biāo)軸旋轉(zhuǎn)多少度,所以你需要new一個Vector3的對象來存儲這個不同坐標(biāo)軸的旋轉(zhuǎn)角度,具體你需要這么寫。

transform.rotation = Quaternion.Euler(new Vector3(0,0,Angle));

? 有人會疑問為什么在X軸和Y軸的參數(shù)中都是0,因為在Unity2D中,Z軸垂直于2D平面,我們的角色實際上也只是繞Z軸旋轉(zhuǎn),因此X和Y軸都不需要動它。

最后將這些代碼連起來,用一個方法封裝起來。取名就叫“DirectionChange”吧

void DiretionChange(){
       //獲取鼠標(biāo)在游戲中的世界坐標(biāo)
      Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

       //獲取玩家坐標(biāo)和鼠標(biāo)的世界坐標(biāo)形成的向量的角度
      float Angle= Mathf.Atan2(mousePosition.y - transform.position.y, mousePosition.x transform.position.x) * Mathf.Rad2Deg;
      //使玩家朝向鼠標(biāo)方向
        transform.rotation = Quaternion.Euler(new Vector3(0,0,Angle));
}

將這個方法在Unity的C#腳本中默認(rèn)的Update方法中調(diào)用就可以實現(xiàn)啦?。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-401916.html

到了這里,關(guān)于Unity2D中讓角色旋轉(zhuǎn)朝向鼠標(biāo)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【筆記】Unity2D角色和物體移動的幾種方法

    在Unity中對于物體移動有多種方法,這里根據(jù)b站up主【鼓勵Jun】的視頻整理了一些筆記 變量聲明: 位移向量var dir=new Vector3(deltax.deltay,deltaz); 移動速度var speed=2; ps:變量聲明都在主要都在方法外,實際位移操作則在Update方法中。 #鍵盤輸入,這里舉一個只x軸上移動的例子,y軸同

    2023年04月08日
    瀏覽(21)
  • unity2d里實現(xiàn)鼠標(biāo)拖拽物體的功能

    在 Unity 中實現(xiàn)鼠標(biāo)拖拽物體的功能需要使用到 Unity 的 Physics 系統(tǒng)。 要實現(xiàn)鼠標(biāo)拖拽物體,你需要在場景中添加以下內(nèi)容: 一個 Rigidbody 2D 組件,用于控制物體的運(yùn)動。 一個 Box Collider 2D 組件,用于檢測鼠標(biāo)與物體的碰撞。 一個腳本,用于監(jiān)聽鼠標(biāo)的輸入,并在鼠標(biāo)按下時拖

    2024年02月11日
    瀏覽(20)
  • Unity2D 實現(xiàn)UGUI滾動鼠標(biāo)滑輪以鼠標(biāo)位置點(diǎn)為中心縮放圖片

    Unity2D 實現(xiàn)UGUI滾動鼠標(biāo)滑輪以鼠標(biāo)位置點(diǎn)為中心縮放圖片

    ?先放參考文章: Unity3d UGUI以鼠標(biāo)位置點(diǎn)為中心縮放圖片(含項目源碼) https://blog.csdn.net/qq_33789001/article/details/117749837 再放實現(xiàn)效果: 說說事情緣由,項目需要用到這個效果,所以上網(wǎng)找了個參考文章,后來不知道為什么失效了,所以想著自己改改,看看是什么毛病。 貼原

    2024年02月11日
    瀏覽(20)
  • Unity2D學(xué)習(xí)筆記-Tilemap

    Unity2D學(xué)習(xí)筆記-Tilemap

    tilemap算是接觸了幾次,但是無論是看視頻還是看文章都一知半解,這次把編輯地圖的開始步驟搞清楚。 首先要知道tilemap是做什么的。 這里提到的Tilemap其實不止是Tilemap:Tilemap本身是地圖編輯器(雖然我更傾向于理解為“場景”,不過編輯地圖才是核心)。之前學(xué)的印象是,

    2023年04月09日
    瀏覽(26)
  • Unity2D實現(xiàn)子彈追蹤目標(biāo)

    Unity2D實現(xiàn)子彈追蹤目標(biāo)

    實現(xiàn)子彈追蹤目標(biāo)有很多種方法,首先是一開始就選定了目標(biāo)的位置,然后按照曲線運(yùn)動軌跡的方式,持續(xù)運(yùn)動到目標(biāo)點(diǎn),不過如果目標(biāo)移動了,就得將對應(yīng)的軌跡重新計算一次,另外如果需要設(shè)置范圍的話更不好做。另一種是銳角追蹤,就是在目標(biāo)進(jìn)入識別范圍后,將子彈

    2024年02月06日
    瀏覽(28)
  • Unity2D繪制游戲地圖

    Unity2D繪制游戲地圖

    首先,我們選擇我們的地圖素材(由于筆者在前段時間已經(jīng)進(jìn)行切割,最近才開始整理這一段,所以這個是用的老素材,可能有朋友就會覺得切割前后不一致,但是思路是一樣的,大家學(xué)習(xí)思路即可) ?接著,我們找到右上角的Slice進(jìn)行圖片切割,我這邊簡單介紹一下這個切

    2024年02月08日
    瀏覽(30)
  • Unity2D小狐貍教程筆記

    Unity2D小狐貍教程筆記

    下載 https://unity.cn/releases 默認(rèn)顯示方式 window - layout - default SampleScene : Project - 文件目錄 Scene -游戲畫面 asset store - 素材商店 在asset store下載素材 sunnyland shift + sapace 放大窗口 1.背景導(dǎo)入 每個格子16像素: Pixels Per Unit 16px 2.繪制瓷磚式地圖 新建瓦片圖層:左上角/右鍵 2D object

    2024年01月24日
    瀏覽(32)
  • Unity2d游戲項目--小狐貍

    Unity2d游戲項目--小狐貍

    (一) 在文件夾中找到back圖片,并在檢查器面板中將back圖片的每單位像素數(shù)設(shè)置為16。 (文件所在地) (面板設(shè)置) (二) 將圖片拖入到場景中 (一) 生成矩形的瓦片地圖 (二) 打開平鋪調(diào)色板 (三) 新建并命名為map,在原目錄新建一個文件夾,用于存放你在這個瓦

    2024年02月03日
    瀏覽(32)
  • Unity2D-使人物翻轉(zhuǎn)的方法

    方法①:使用組件: SpriteRenderer 使用 GetAxis() 和 GetAxisRaw() 沒有區(qū)別 方法②:使用組件: Transform 情況1:使用 GetAxisRaw() ;沒有剎車效果,及翻轉(zhuǎn)過程沒有過渡, m o v e F a c t o r moveFactor m o v e F a c t or 取-1,1,0 情況1:使用 GetAxis() ;有剎車效果,及翻轉(zhuǎn)過程有過渡, m o v e F a c t

    2024年02月12日
    瀏覽(23)
  • 【Unity2D】相機(jī)移動以及設(shè)置相機(jī)邊界

    【Unity2D】相機(jī)移動以及設(shè)置相機(jī)邊界

    添加相機(jī)時,首先需要在unity中添加 Cinemachine 包 第一次使用這個包時,需要在Package Manager中搜索并安裝 ?安裝Camera Mechine包后,添加2D Camera 設(shè)置跟隨對象為Ruby (從Hierarchy中將Ruby拖動到Follow中) ? 同時,由于世界是有邊界的,要為相機(jī)設(shè)置邊界 通過添加Extension為相機(jī)添加

    2024年02月16日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包