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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Unity 从零开始的2D游戏开发 —— 角色移动脚本

發布時間:2023/12/15 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity 从零开始的2D游戏开发 —— 角色移动脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?角色移動腳本是一個游戲最基礎的腳本,通常也是改動最多的腳本,因此在后期會變得異常臃腫,不過這不是我們討論的問題,本文主要說明角色移動腳本的設計和一些區別。


1.通過控制角色的Transform來移動角色

通過改變Transform組件里的position的值來改變角色的位置是一種簡單的方法

h = Input.GetAxis("Horizontal"); transform.position += new Vector3(h, 0, 0);

大概的代碼如上,通過Input獲取到方向鍵的值直接加到transform.position上,這樣做的好處是簡單直觀,然而有一些缺點

(1)沒有辦法控制移動速度

解決辦法是添加一個移動速度變量來控制,于是代碼就變成了:

public float MoveSpeed; h = Input.GetAxis("Horizontal"); transform.position += new Vector3(h*MoveSpeed, 0, 0);

通過在unity面板改變MoveSpeed的值來改變移動速度。

(2)過快的移動可能會超過幀率,此時會出現一個問題,就是有殘影

解決辦法暫時沒有想到,也許把移動速度控制在適合范圍內可以解決這個問題。

(3)不夠自然,不夠真實

突然的移動位置不真實,而且沒有一個速度漸變的過程,解決辦法同(2),或者可以添加一個漸變的過程來解決,不過這樣就顯得比較麻煩。

接下來我介紹第二種辦法來解決上面的第(3)個問題。

?


?

2.通過控制角色的剛體速度來移動角色

通過控制角色的剛體速度來控制角色的方法,也是一種較為直觀的方法,代碼如下

Rigidbody2D rig; rig = GetComponent<Rigidbody2D>();h = Input.GetAxis("Horizontal"); rig.velocity = new Vector2(h, rig.velocity.y);

通過Input獲取到方向鍵的值直接加到剛體速度上,這里要注意一個問題,為什么賦值還有一個rig.velocity.y呢?

這是因為我們2D游戲的移動,通常還要添加跳躍動作,如果跳躍動作也是通過賦值速度或者力的話,要注意保持原來y軸上的速度不變。

但是這種方法也是缺點的。

?

(1)受到摩擦力影響

摩擦力會使你的速度比你預設的值稍微小點,是因為剛體存在摩擦力的設定,雖然可以通過取消摩擦力來控制,但是這樣會讓操作手感完全改變。不過這個也可以看做優點,因為更加的真實,接近現實世界,不同游戲有不同的設定。

(2)按鍵停止時,不會立即停下

這點很好理解,因為你給的是剛體的速度,如果你按鍵停止了,那就會做有初速度受到摩擦力的直線運動了(瞬間回到高中物理課堂)。不過這個可以通過代碼來解決。

我以為通過直接改變velocity.x的值可以停下,結果發現不行,因為h還沒有清0,于是又把h給賦值為0,發現還是不行。猜測可能是因為剛體的慣性問題,問題先放著。

?

這種方法比較普遍,也是我推薦使用的角色移動腳本的編寫。第三種可以通過給剛體一個力來移動,不過實在過于硬核,就不實現出來了,如果以后有機會接觸這種操作手感,再來完善本文。


?

?

接下來是本文的第二個部分,角色光有移動不行,還得會跳躍,接下來介紹一個個人比較推薦,應該也是運用比較廣泛的跳躍實現方法。

?

通過給剛體施加力來實現跳躍

通過給剛體施加力是一種簡單的方法,也較為接近現實世界。

Rigidbody2D rig; rig = GetComponent<Rigidbody2D>();public float jumpForce;if (Input.GetKeyDown(KeyCode.Space)) {rig.AddForce(new Vector2(0, jumpForce)); }

通過敲擊空格直接給剛體一個力來實現跳躍的效果,jumpForce可以在unity面板調試,這種方法非常簡單直觀,不過跳躍有些細節,比如跳躍檢測,目前的代碼并沒有實現,簡單來說就是角色可以無限跳,而且力是可以疊加的,如果角色可以二連跳,三連跳等,在跳躍瞬間多次敲擊空格就可以以幾倍的加速度跳出去,又是一個物理問題,給角色施加一單位的力,兩單位,三單位等等,所展現出來的物理效果是完全不同的,而且速度過快會有穿模問題

?


總結:本文主要介紹2D游戲里左右移動和跳躍腳本,左右移動兩種方法各有優劣,不過本人較為推薦通過剛體速度來控制角色的移動,不過也有通過控制position來的游戲,不同的游戲側重點不同,就會選擇不同的方式來實現。跳躍也可以通過速度來控制,不過畫面過于鬼畜,大家可以動手嘗試一下。簡單的實現移動和跳躍,本文到此為止,謝閱。

?

總結

以上是生活随笔為你收集整理的Unity 从零开始的2D游戏开发 —— 角色移动脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

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