Movatterモバイル変換


[0]ホーム

URL:


3Dアクションゲームの作り方5 プレイヤー移動処理とアニメーション処理の開発

Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

本講座はUnityで3Dアクションゲームの作り方について説明しています。前回はプレイヤーのジャンプ機能、またコライダーの処理について解説してきました。

コライダーの処理は今後も多く出てくるので、前回の記事を見ていない方は読んでおいてくださいね。

前回の記事:

3Dアクションゲームの作り方4 ジャンプ処理とコライダー処理汎用スクリプトを開発しよう
本講座はUnityで3Dアクションゲームの作り方について説明していきます。前回はプレイヤーが攻撃できるようにするまで解説してきました。前回の記事:第4回目は攻撃処理に加え、キャラクターをジャンプできるようにしていきます。また、本講座だけでな...
feynman.co.jp
2023.12.23

第5回目はプレイヤーの移動処理・アニメーション処理の開発方法について解説していきます。

今回のゲームはスマホでの動作を前提としていますので、スマホ入力の解説もしていきますが、先にテスト用にPCでの入力処理を作成します。

では始めていきます。


【Line登録者限定のプレゼントもあるよ!】

移動機能の作成

まずはPCのキーボード入力でプレイヤーを動かしていきます。

「↑↓←→」キーで移動できるようにしていきましょう。

PCキー入力の取得

PCのキー入力を取得する関数に「Input.GetKey()」というものがありますが、今回は方向のみの取得のため「Input.GetAxis()」という関数を使用します。

まずは「PlayerController」に追加していきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
usingSystem.Collections;
usingSystem.Collections.Generic;
usingUnityEngine;
 
publicclassPlayerController:MonoBehaviour
{
    ・・・略
 
    // PCキー横方向入力.
    floathorizontalKeyInput=0;
      // PCキー縦方向入力.
    floatverticalKeyInput=0;
 
      ・・・略
 
    // Update is called once per frame
    voidUpdate()
    {
        // PCキー入力取得.
        horizontalKeyInput=Input.GetAxis("Horizontal");
        verticalKeyInput=Input.GetAxis("Vertical");
 
        Debug.Log(horizontalKeyInput+"."+verticalKeyInput);
    }
 
      ・・・略
}

「Input.GetAxis()」はカッコの中に「”Horizontal”」「”Vertical”」と記載することで、横方向(←→)、縦方向(↑↓)を「float」の値で取得できます。

それを「Update」関数の中で取得して、「horizontalKeyInput」「verticalKeyInput」という変数に保存し続けています。

「Debug.Log」をしてConsoleウインドウに表示していますので再生して数値が取れるかどうか試してみましょう。

確認ができたら「Debug.Log」は消してしまいましょう。

FixedUpdate

次に取得したキー入力を使って、プレイヤーに力を加えて動かすのですが、ここで「FixedUpdate」というものを使用します。

これは「Update」と同じ様に繰り返し処理をし続けるUnityの関数で、違いは繰り返しの間隔にあります。

「Update」というのは1フレーム毎に呼ばれる関数で、「FixedUpdate」というのは一定時間毎に呼ばれる関数です。

1フレームというのは必ずしも一定時間にはならないので、「Update」の中で力を加えると一定でない間隔で力が加わってしまいます。そのため移動処理に使用するとガタガタしたり不安定になってしまいます。

続きを読む

このコンテンツはパスワードで保護されています。コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

次回はこの操作をスマホでできるように変更していきます。

また、スマホ操作の処理を作成する際にUnityRemoteというスマホアプリが有ると便利ですので、この機会にダウンロードしておきましょう。

UnityRemoteについて : 

Unity Remote (スマホアプリ) の使い方 スマホでエディタの再生状態を確認!
「UntiyRemote」というスマホアプリについて解説します。正確には「Unity Remote 5」という名前でIOS、Androidともに配信されていますので、apple storeやGoogle play storeでそれぞれダウン...
feynman.co.jp
2022.06.20

次回の記事 : 

3Dアクションゲームの作り方6 スマホタッチによる移動処理を開発しよう!
本講座はUnityで3Dアクションゲームの作り方について説明していきます。前回はプレイヤーの移動処理、アニメーションの設定について解説してきました。前回の記事:第6回目は前回作成したPCでのキー入力や移動処理を実機のスマホで操作できるように...
feynman.co.jp
2022.08.29


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

関連記事

Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方10 Unityパーティクルで攻撃エフェクトを作る コンティニュー処理も

今回は3Dアクションゲームの作り方講座第10回です。前回はプレイヤーが一定範囲内に入った時の衝突判定システムを作り、敵キャラからプレイヤーへの攻撃処理を実装していきました。前回の記事:第10回目は攻撃を当てた、食らったときのエフェクト、また...
2023.07.18
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方9 一定範囲内に標的が存在したら敵から攻撃する処理の実装

本講座では引き続きUnityで3Dアクションゲームの作り方について説明していきます。前回は敵キャラへの攻撃処理やアニメーション処理を作成していきました。前回の記事:第9回目は敵キャラをプレイヤーの方向に向けたり、敵からの攻撃処理を作成したり...
2022.09.17
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方8 敵キャラへの攻撃当たり判定・戦闘式・アニメーションの実装

本講座はUnityで3Dアクションゲームの作り方について説明していきます。前回まででモバイル操作も含めたプレイヤーの一連の処理を完成させました。前回の記事:第8回目は攻撃当たり判定やアクションゲームとして成り立つように敵キャラを作成していき...
2024.05.15
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方4 ジャンプ処理とコライダー処理汎用スクリプトを開発しよう

本講座はUnityで3Dアクションゲームの作り方について説明していきます。前回はプレイヤーが攻撃できるようにするまで解説してきました。前回の記事:第4回目は攻撃処理に加え、キャラクターをジャンプできるようにしていきます。また、本講座だけでな...
2023.12.23
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方補足:完成版プロジェクトファイルとスクリプト全集

この章は追記補足になります。アクションゲーム講座完成時のプロジェクトファイルとスクリプト全集を掲載しておきます(もしかしたら多少数値など異なっているかもしれませんがご了承ください)。3Dアクションゲームの作り方講座へ戻る>>
2023.01.14
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

3Dアクションゲームの作り方6 スマホタッチによる移動処理を開発しよう!

本講座はUnityで3Dアクションゲームの作り方について説明していきます。前回はプレイヤーの移動処理、アニメーションの設定について解説してきました。前回の記事:第6回目は前回作成したPCでのキー入力や移動処理を実機のスマホで操作できるように...
2022.08.29
Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)

コメント

  1. ポポポより:

    Vector3 cameraMove = Camera.main.gameObject.transform.rotation * move;
    cameraMove.y = 0;

    ここでは、先に算出した力を回転することにより、カメラから見た左右をX軸、手前奥をZ軸となるようにしています。そして回転により出てしまうY軸方向の力を再度0にします。
    ———————————————————
    上記で「cameraMove.y」を0にした後に、
    リジッドボディの速度で引いているため、
    y軸の下方向に常に力が発生すると思います。
    そのためジャンプの高さが低くなってしまいます。

    y軸方向には力を加えないために
    「cameraMove.y = rigid.velocity.y;」
    とするのが良いかなと思います。

    • Unity入門の森より:

      コメントありがとうございます!

      ご指摘いただいたコードに関してですが、
      Vector3 currentRigidVelocity = rigid.velocity;
      currentRigidVelocity.y = 0;
      の2行が初出解説部分のコードから抜けていたので訂正しておきました。

      最終的なコードやプロジェクトなどでは上記2行が入っているので全体としては問題ありません。
      ポポポさんが仰っていたy軸方向にかかる力がかからないようになっています。

  2. ポポポより:

    ご対応ありがとうございます。

    詳しい説明や、読者が間違いやすいポイントなどが細かく記載されており、
    とても分かりやすく勉強になります。
    感謝です。ありがとうございます。

  3. オイムスより:

    こんにちは。最近こちらのサイトでUnityの勉強をはじめました。とても分かりやすく、参考になっています。ありがとうございます。

    「移動力を加える」のところで、FixedUpdate内の

    rigid.AddForce( cameraMove – currentRigidVelocity, ForceMode.VelocityChange );

    rigid.AddForce( cameraMove – rigid.velocity, ForceMode.VelocityChange );

    となっています。その後のコードでは正しくなっているのですが、ここだけ直っていないのですみませんが直していただけると助かります。

    • Unity入門の森より:

      コメントありがとうございます。
      動作としてはどちらでも問題ないですが直前に代入文が入っていること及びその後のつながりを考えるとrigid.AddForce( cameraMove – currentRigidVelocity, ForceMode.VelocityChange );のほうが良いですね。
      修正しておきました。
      教えていただきありがとうございます。

コメントをどうぞコメントをキャンセル

メールアドレスが公開されることはありません。

CAPTCHA


↓知りたいことを検索してね

Unity入門の森 インディーゲームリリース!

魔女と召喚獣

 

Seeker of Darkness

 

呪術迷宮をリリース

unity入門の森 ゲームの作り方のyoutubeチャンネル

unity入門の森 ゲームの作り方
「unity入門の森 ゲームの作り方」のyoutubeチャンネル。unityを用いたゲームプログラミング、unityスクール、ゲームクリエイターになりたい方向けの情報を中心に発信。インディーゲームクリエイター・プロゲーマー・ゲーム実況者を目...
www.youtube.com

ブログランキング参加中(クリックして応援してくれると嬉しいな)

にほんブログ村 教育ブログ プログラミング教育へ
にほんブログ村

カテゴリー

最近の投稿

タイトルとURLをコピーしました

[8]ページ先頭

©2009-2025 Movatter.jp