日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity蛮牛教程噩梦射手----代码讲解(1)

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity蛮牛教程噩梦射手----代码讲解(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????? 很久沒有寫博客了,因為最近開始學習Unity。在蠻牛教育網上有一套講解Unity官方教程的視頻-------噩夢射手游戲實例,網站為http://www.unitytrain.cn/course/40,是Logic3d老師講解的。游戲本身并不是很復雜,跟著視頻來學習的話困難不打。然而作為程序員來學習這一套視頻,更加關注的是這個游戲的腳本部分。也看到有評論說對代碼部分老師講解并不是很深入,所以我打算開這樣一個新坑--------對該套視頻部分的腳本代碼進行講解。好,那廢話不多說,我們進入正題。

?

?????? 視頻第一課出現的是游戲主角Player的移動腳本,我先上代碼

?

??????代碼開頭定義的變量我們先跳開,來關注特殊的函數

? FixedUpdate()函數

?所以我們在這個函數里面加入我們對鍵盤移動輸入信號的響應事件。??通過GetAxisRaw()來獲取到當前用戶的輸入,在通過Move(),Turning(),Animating()函數來逐個改變Player的位置Position,旋轉,動畫狀態Animation。我們來一一解釋。

?

Move()函數:

直接使用Vector3 movement來記錄當前的水平垂直方向的位移值,乘上速度和單位時間,最后賦予Player新的Position實現位置移動。這段代碼不難理解。

注意:這里使用剛體RigidBody來實現位置的轉變。直接使用transfrom.position也是可以的。

?

Turning()函數:

這里涉及到通過光線投影來記錄當前鼠標方向,來實現player視角的旋轉的方法。

首先是

?我們將使用它來記錄我們鼠標和Floor的碰撞,來獲取我們需要的視角,實現旋轉。這里我們需要使用到point屬性。我們下面會講到。

?

其次

這是光線投影碰撞的核心函數。四個參數中,后兩個我們在這個腳本的開頭定義一個定義好了。包括射線長度我們定位100,還有碰撞的層蒙版設為Floor。而前兩個參數則是我們射線的起點和方向。該函數返回值為true則光線投影反生了碰撞,反之沒有。

如果有碰撞發生,我們需要計算出新的旋轉方向,并且使用這個方向來實現player視角的變化。這里使用Quaternion四元數來實現旋轉。

?

最后Animating()函數

我們檢測當前的水平,垂直速度是否為0,否則就是移動,我們就把角色的狀態機的參數進行改變,實現動畫效果。

?

?

------player的運動腳本基本就這些內容了,其他的在蠻牛的課程中也有講解。如果你是直接看這篇博客可能不知所云,請見諒。

總結

以上是生活随笔為你收集整理的Unity蛮牛教程噩梦射手----代码讲解(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。