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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

unity学习:控制人物的移动

發(fā)布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity学习:控制人物的移动 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

一、導(dǎo)入

代碼

代碼使用分析

?二、使用Input.GetKey來獲取鍵盤中按下的鍵

代碼?

代碼使用分析

三、獲取水平輸入與豎直輸入

代碼?

代碼使用分析

四、幀為參照改為秒為參照

代碼?

代碼使用分析


先解釋一下代碼中會出現(xiàn)的speed:

public float speed = 0.1f;

一、導(dǎo)入

首先我們來試試僅僅讓人物無條件開始移動,不用鍵盤加以控制

代碼

void Update(){//創(chuàng)建一個Vector2對象position,用來獲取當前對象的位置Vector2 position = transform.position;//更改position的x坐標值,讓其加上0.1position.x += speed;transform.position = position; }

以上代碼的效果是人游戲?qū)ο笠悦繋?.1米的速度無條件向右移動,當游戲開始運行,此游戲?qū)ο罅⒓聪蛴乙苿?#xff0c;移動快慢取決于各位的電腦。

代碼使用分析

(1)Vector2 二維向量:

在 Unity 中,Transform 值使用 x 表示水平位置,使用 y 表示垂直位置,使用 z 表示深度。這 3 個數(shù)值組成一個坐標。由于此游戲是 2D 游戲,你無需存儲 z 軸位置,因此你可以在此處使用 Vector2 來僅存儲 x 和 y 位置。

另外,Transform 中 position 的類型,也是 Vector2。

(2)transform:

可以暫時理解為代指當前游戲?qū)ο蟆?/p>

二、使用Input.GetKey來獲取鍵盤中按下的鍵

用wsda移動,用nput.GetKey獲取按鍵

代碼?

void Update(){?//獲取當前位置Vector2 position = transform.position;if(Input.GetKey("d")){position.x += speed;}if (Input.GetKey("a")){position.x -= speed;}if (Input.GetKey("w")){position.y += speed;}if (Input.GetKey("s")){position.y -= speed;}transform.position = position; }

代碼使用分析

(1)Input類:

使用該類來讀取傳統(tǒng)游戲輸入中設(shè)置的軸/鼠標/按鍵,以及訪問移動設(shè)備上的多點觸控/加速度計數(shù)據(jù)。若要使用輸入來進行任何類型的移動行為,請使用 Input.GetAxis。

三、獲取水平輸入與豎直輸入

用Horizontal與Vertical來獲取水平輸入與豎直輸入

代碼?

void Update(){//獲取水平輸入,按向左,會獲得-1.0f;按向右,會獲得0.1ffloat horizontal = Input.GetAxis("Horizontal");//獲取垂直輸入,按向下,會獲得-1.0f;按向右,會獲得0.1ffloat vertical = Input.GetAxis("Vertical");//獲取當前對象位置Vector2 position = transform.position;//更改位置position.x += speed * horizontal;position.y += speed * vertical;//新位置transform.position = position; }

代碼使用分析

(1)Horizontal與Vertical:

在 Unity 項目設(shè)置中,可以通過 Input Manager 進行默認的游戲輸入控制設(shè)置

Edit > Project Settings > Input

鍵盤按鍵,以 2 個鍵來定義軸:

負值鍵 negative button,被按下時將軸設(shè)置為 -1

正值鍵 positive button ,被按下時將軸設(shè)置為 1

Horizontal : 水平軸 對應(yīng) X 軸

Vertical :縱軸 對應(yīng) Y 軸

?等一下,是否發(fā)現(xiàn)上面代碼運行起來之后人物的移動會特別快(尤其是那些電腦好的家伙),因為上面的速度單位是:米/幀,所以不同電腦會有不同的移動效果,下面我們將其單位改為:米/秒。

四、幀為參照改為秒為參照

Time.deltaTime出場

代碼?

void Update(){//獲取水平輸入,按向左,會獲得-1.0f;按向右,會獲得0.1ffloat horizontal = Input.GetAxis("Horizontal");//獲取垂直輸入,按向下,會獲得-1.0f;按向右,會獲得0.1ffloat vertical = Input.GetAxis("Vertical");//獲取當前對象位置Vector2 position = transform.position;//更改位置//將每幀每米變成每秒每米position.x += speed * horizontal * Time.deltaTime;position.y += speed * vertical * Time.deltaTime;//新位置transform.position = position; }

代碼使用分析

Time.deltaTime:

是每幀的時間間隔,float 類型。

一般將這個值,用在 Update 方法中,乘以移動的距離(或角度),用來獲取恒定(不同硬件水平的電腦間)的速度。

unity官方文檔:

https://docs.unity3d.com/ScriptReference/Time-deltaTime.htmlhttps://docs.unity3d.com/ScriptReference/Time-deltaTime.html

好啦,這就是這次學(xué)習(xí)的小小總結(jié)!?

總結(jié)

以上是生活随笔為你收集整理的unity学习:控制人物的移动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。