Unityでキャラクターの移動速度を上げダッシュを実装する

操作しているキャラクターの移動速度を上げる方法を実装してみます。
横向きアクションゲームや見下ろし型RPG等でもよく使われてるダッシュ的な処理です。
色々やり方はあると思いますが今回は移動中にスペースキーを押したら早く動くみたいな感じで作ります。

ちなみに私は以前Unityでサイドビューのゲームを作る時にこちらの講座を参考に勉強しました。
初心者にも解りやすく、ジャンプの処理、タイルマップの使い方、リトライの処理、など内容もかなり充実しているので大変おすすめの講座です。

unityの新規2Dプロジェクトを作成し作業に入ります。
今回は見下ろしではなく横向きのゲームを想定して作ってみます。
画面サイズは960*540です。

ゲームの画面を作る

早速ゲームに必要なものを用意します。
まずPlayerが必要なので横向きのプレイヤー画像を用意しHierarchyに配置します。
今回はアニメーションも設定しました。
InspectorからPlayerに下記コンポーネントを追加していきます

  1. Box Collider 2D
  2. Rigidbody 2D

数値等はそのままにしてあります。

次に地面となるものを用意します。
手抜きして2DObjectからSquareを置いて横長にし、Groundとしました。
こちらにはBox Collider 2Dだけを追加しておきます。
GroundはPlayerよりも下に来るよう、いい塩梅に配置します。

起動するとこんな感じになりました。
プレイヤー横向き
まだこの段階ではプレイヤーは移動しません。

プレイヤーが左右に移動する処理

ここからプレイヤーを動かしていきます。
新たにC#スクリプトを作成しPlayerにアタッチします。
今回はPlayerというスクリプトにしました。
ソースコードはこのような感じにしています。

まず必要となりそうな変数を宣言します。
通常スピードとダッシュスピードはInspectorから変更出来るようにSerializeFieldにします。
今回は通常を1、ダッシュを3としました。
通常とダッシュ時の速度設定

続いてStart時にcurrentSpeedにspeedを代入します。
Update関数内でキー入力を受け取ります。

Input.GetAxisRaw()

今回は横方向にしか移動しませんのでInput.GetAxisRaw(“Horizontal”);で水平方向の入力をfloat型のxという変数に代入します。
Input.GetAxisRaw()は入力された軸によって-1,0,1のいずれかの値を返します。
-1が左、0が何も押して無い、1が右です。
ちなみに似たような関数でInput.GetAxis()というものがあります。
これは入力された軸に補正をかけて徐々に-1や1に近づいて値を返してくれます。

Playerを反転させる

続いてxの値によってPlayerのxのスケールを1か-1にしています。
xが0より小さい場合(左向きの時)はスケールxを-1「transform.localScale = new Vector3(-1, 1, 1);」に
xが0より大きい場合(右向きの時)はスケールxを1「transform.localScale = Vector3.one;」にしています。
他にもやり方はあると思いますが、今回は簡単なこの方法を使っています。

Playerを移動させる

最後にtransformのTranslateメソッドでPlayerを移動させています。
Translateは移動を専門的に行うメソッドです。
第一引数にVector3、第二引数にどの座標を基準にするかを設定できます。
Space.Worldでワールド座標、Space.Selfでローカル座標での移動となり、省略するとSpace.Selfになります。
今回はnew Vector3(x, 0, 0) * currentSpeed * Time.deltaTimeを引数にとっています。
new Vector3(x, 0, 0)だけだと、毎フレーム呼ばれるのでめちゃくちゃ早く動いてしまいます。
それを補正するためにTime.deltaTimeをかけています。
ちなみにcurrentSpeedは通常とダッシュのためにかけています。

実行みるとこんな感じでプレイヤーが左右に移動してくれました。
アニメーションがぎこちないですがこれでよしとします。
プレイヤーが左右に動く

スペースキーを押してダッシュさせる

それでは最後にダッシュ処理を追加します。
Update関数内にこのように記述します。

やってることは簡単でしてスペースキーを押されてる時はスピードを大きくして、それ以外の時は通常に戻すといった処理です。
スピードを大きくするやり方は今回はspeedにdashSpeedをかけていますが、単純にcurrentSpeed = dashSpeedでもいいと思います。

実行するとこのような感じになりました。
スペースキーでダッシュ実装

スペースキーを押してるか押していないかでプレイヤーの移動速度が変わったのがわかると思います。

GetAxis()を使った場合

最後におまけでGetAxisRawをGetAxisに変更してプレイヤーを動かしてみました。
GetAxisで徐々に加速

GetAxisRawと比べて最初だけ徐々に早くなっていく感じになります。

以上超簡単ですがプレイヤーのダッシュの実装でした。
他にもプレイヤーの移動方法やダッシュの方法はあると思いますので機会があれば書いてみようかと思います。

Unity開発おすすめPC

NEXTGEAR JG-A5G5A

NEXTGEAR JG-A5G5A
OS : Windows 11 Home 64ビット
CPU : AMD Ryzen™ 5 4500 プロセッサー
グラフィックス : NVIDIA® GeForce RTX™ 3050
メモリ標準容量 : 16GB (8GB×2 / デュアルチャネル)
M.2 SSD : 1TB (NVMe)
保証期間 : 3年間センドバック修理保証・24時間×365日電話サポート
価格:119,900円(税込)~
NEXTGEAR JG-A5G5A 詳細

Lenovo LOQ Essential Gen 9 - ルナグレー

Lenovo LOQ Essential Gen 9 - ルナグレー
OS : Windows 11 Home 64ビット
CPU : インテル® Core™ i7-12650HX
グラフィックス : NVIDIA® GeForce RTX™ 4050 Laptop GPU 6GB GDDR6
メモリ標準容量 : 16 GB DDR5-4800MHz
ストレージ : 512 GB SSD M.2 2242 PCIe-NVMe Gen4 QLC
ディスプレイ :15.6" FHD液晶 (1920 x 1080) IPS, 光沢なし, マルチタッチ非対応, 100%sRGB, 300 nit, 144Hz
内蔵カメラ :720p HDカメラ (プライバシーシャッター付)
無線 :Wi-Fi 6対応 (IEEE 802.11ax/ac/a/b/g/n準拠) 2x2 & Bluetooth®
保証期間 : 1 年間 Legion Ultimate Support
価格:¥149,820 税込・送料無料
Lenovo LOQ Essential Gen 9 - ルナグレー 詳細

【MDT46T144】

【MDT46T144】
CPU : Intel® Core i5 14400F
グラフィックス : RTX 4060 Ti
メモリ標準容量 : 16GB
ストレージ :500GB
保証期間 : 通常1年保証(無償1年)
価格:169,800円
【MDT46T144】 詳細

LOQ Tower 17IRR9 :カスタマイズモデル

LOQ Tower 17IRR9 :カスタマイズモデル
OS : Windows 11 Home 64ビット
CPU : インテル® Core™ i5-14400F プロセッサー
グラフィックス : NVIDIA® GeForce RTX™ 3050 6GB GDDR6
メモリ標準容量 : 16 GB DDR5-4800MHz (UDIMM) - (2 x 8 GB)
ストレージ : 512 GB SSD M.2 2280 PCIe-NVMe Gen4 TLC
保証期間 : 1 年間 Legion Ultimate Support
価格:¥109,450 税込・送料無料
LOQ Tower 17IRR9 :カスタマイズモデル 詳細

NEXTGEAR JG-A5G60(ホワイトカラーモデル)

NEXTGEAR JG-A5G60(ホワイトカラーモデル)
OS : Windows 11 Home 64ビット
CPU : AMD Ryzen™ 5 4500 プロセッサー
グラフィックス : NVIDIA® GeForce RTX™ 4060
メモリ標準容量 : 16GB (8GB×2 / デュアルチャネル)
M.2 SSD : 1TB (NVMe)
保証期間 : 3年間センドバック修理保証・24時間×365日電話サポート
価格:137,500円(税込)~
NEXTGEAR JG-A5G60(ホワイトカラーモデル) 詳細

NEXTGEAR JG-A5G60(1周年記念モデル)

NEXTGEAR JG-A5G60(1周年記念モデル)
OS : Windows 11 Home 64ビット
CPU : AMD Ryzen™ 5 4500 プロセッサー
グラフィックス : NVIDIA® GeForce RTX™ 4060
メモリ標準容量 : 16GB (8GB×2 / デュアルチャネル)
M.2 SSD : 1TB (NVMe)
保証期間 : 3年間センドバック修理保証・24時間×365日電話サポート
価格:139,900円(税込)~
NEXTGEAR JG-A5G60(1周年記念モデル) 詳細

G TUNE FG-A7A7X

G TUNE FG-A7A7X
OS : Windows 11 Home 64ビット
CPU : AMD Ryzen™ 7 9800X3D プロセッサ
グラフィックス : AMD Radeon™ RX 7700 XT
メモリ標準容量 : 32GB (16GB×2 / デュアルチャネル
M.2 SSD : 2TB (NVMe Gen4×4)
ドライブ仕様 :DVDスーパーマルチドライブ
無線 :Wi-Fi 6E( 最大2.4Gbps )対応 IEEE 802.11 ax/ac/a/b/g/n準拠 + Bluetooth 5内蔵
保証期間 : 3年間センドバック修理保証・24時間×365日電話サポート
価格:379,800円(税込)~
G TUNE FG-A7A7X 詳細

関連記事

0
Would love your thoughts, please comment.x
()
x
セール中!
ドット絵講座

これであなたもドット絵マスター!

短期間で学べるAseprite!知識ゼロからでもOK