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游戏开发 —— 角色移动脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .bat文件打开方式
- 下一篇: 2018 ChinaJoy 跟着万代南梦