Unity

CharacterControllerを使ってアスレチックアクションを作ろう

投稿日:2018年10月20日 更新日:

今回作るゲーム

51

今回やること

  • ①プレイヤーの移動
  • ②プレイヤーのジャンプ
  • ③プレイヤーからエフェクトを出す
  • ④アイテムを配置する
  • ⑤制限時間を作る

パッケージのダウンロード

こちら
よりパッケージをダウンロードしてプロジェクトに入れて下さい

一応元データも載っけておきます

プロジェクトの入れ方はこちら

プレイヤーの移動

今回はプレイヤーの移動をするために、CharacterControllerというものを使います
このチュートリアルでは事前につけてありますが、本当は自分でつけて、大きさの設定もします
こちらにまとめてあるので自分で一から作成したい場合はご覧ください

CharacterControllerの説明

  • プレイヤーに当たり判定がつく
  • 階段や坂道の判定を自動で行ってくれる
  • characterController.Move(Vector3型の変数)で、プレイヤーを動かす
  • characterController.Groundedで、地面についているかどうかを判定できる

C#の基本的なルールと構造の説明

Unityで使うC#にはいくつかルールがあります。それは以下の通りですが、

①どのような種類のコードをどこに入力するのか

②エリアとエリアは{}でとじる

この2点をおさえておけば、Scratchと大差ありません!!
図4-1.png

プレイヤーの移動のプログラミング

プレイヤーの移動は
図2
のようにしていきます

早速、Assets → ScriptsにあるPlayerスクリプトをダブルクリックして開きます
1-2

では実際に、表を参考にしながらコードを書いていきましょう。
Scratchのブロックを積む感覚で一行ずつ打っていきます。

図5.png

表はこちらにあります。

以下の画像の四角で囲った部分を参考に入力の手順を見ていきましょう

図6.png

①このブロックは「ずっと」ではさまれているので、
「ゲーム開始後ずっと実行するエリア」に入力します。

②「もし~なら」を入力していきます。表を見てみると、
mosihyou.png
となっています。条件は違うので()の中は空欄にし、

と入力しましょう。

③条件は「Wキーが押されたら」です。
図7.png
となっていて、今回はSpaceキーではなく、Wキーなので、
if(){}の()の中にInput.GetKey(KeyCode.W))をいれます。

となります。

④実行する内容は「10歩動かす」です。
図8.png
となっているので、
if(Input.GetKey(KeyCode.W))){}の{}の中に
transform.position += transform.TransformDirection(Vector3.forward * 10);をいれます。

となりました。

画面がこんな風になっていれば正解です。
13-1.png

テストプレイをしてWキーをおしてみると…
14

早すぎて全部突き抜けていきましたね

なので、10の後に「 * Time.deltaTime」を追加で入力しましょう

Time.deltaTimeとは?
Scratchで言う「タイマー」のこと
これを移動の後に入力すると処理の速度が一定になり、ちょうどいい感じになる

同様に他のブロックも入力してみましょう。
再生ボタンを押してエラーがないか、確認しましょう。
図9.png

正解はコチラ♪入力したら答え合わせしましょう。

20.png

プレイヤーの重力処理とジャンプのプログラミング

CharacterControllerを用いた場合、ジャンプと重力処理に工夫が必要になります

  • 重力という変数はUnityで用意されているPhysics.gravity.yを使う
  • 地面に触れているかどうかはcharacterController.isGroundedを使う
コードをScratchで表すと以下のようになります
なので、右側のコードを表を参考に記述していきましょう
3-2

変数をつくる

コードを見てみるとJumpという変数が使われています
4-2

今回はprivateのVector3型のJumpという変数を作ります
変数についてはUnityでは沢山の種類があるので、詳しくは以下を参考にして下さい

#C#での変数の作り方

①図を参考にして変数を入力していきます。
図1.png
②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。
スライド1.PNG
型については以下を参考にして下さい。
スライド2.PNG
例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。

読むのが面倒くさい人は、以下画像を参考にして、
図1.png

private Vector3 Jump;

と入力しましょう
16

CharacterControllerを使えるようにする

CharacterControllerを使うには

①変数の部分に

を入力
②void Start(){}の中に

を入力する

17

重力処理を行う

5-2
を入力していきます
ここからはvoid Update{}の中のプレイヤーの移動の次の行から入力しましょう

ジャンプの説明
①ジャンプはCharacterControllerを動かすので、CharacterControllerを動かす命令を入力
②CharacterControllerはcharacterController.Move (作成したVector3型の変数);で動かす
③GravityはUnityではPhysics.gravity.yと入力する
④Jumpをy軸の方向に重力の分だけ変えるので
Jump.y += Physics.gravity.y;と入力する
⑤このままだと重力がかかりすぎるので、Time.deltaTimeをかける
⑥地面に触れたときにJumpを0にするのはUnityの当たり判定が勝手にやってくれる
18

ジャンプを実装する

9-1

を入力していきます
ジャンプは地面についている時のみ出来るようにするので、

を入力します

{}の中にはプレイヤーの移動の時のようにif文を作成し、スペースキーがおされたらという条件を()に入力し、{}にはJumpを3にする命令を入力します
21

テストプレイをしてみると…Wキーで前進、Sキーで後退、ADキーで方向転換、スペースキーでジャンプができますね
22

プレイヤーからエフェクトを出す

AssetStoreを開きます
Window → General → AssetStoreをおします
23

左上をパーティクルに変更し、検索欄にfreeと入力して虫眼鏡のボタンをおします
24

気に入ったパーティクルを選んで、パーティクルの名前をクリックします
25

インポートをおします
26

importをおします
27

どんなエフェクトを出したいか決めます
importをしたパーティクル → Scene → Sceneをダブルクリックしてシーンを開きます
再生ボタンを押してパーティクルをダブルクリックするとそのパーティクルによるのでどれがどれだか分かります
29

シーンを戻し、importをしたパーティクル → Prefabs → 好きなパーティクル を選んでPlayerにD&Dしましょう
28

左上のアイコンをおして移動させたり回転させたりしてちょうどいい位置にしましょう
30

いい感じになりました
31

アイテムを配置する

Item → PrefabsにあるアイテムをD&Dします
32

座標を調整します。xは0、yとzは取りやすい位置にするのがオススメです
33

いっぱい置いてステージを豪華にしましょう。取れば得点が入るように準備はしてあります
34

制限時間をつくる

ここはまず、自分で考えてみましょう。
※ヒント:public float TimeLimit;という変数を作ります
小数を使う場合、必ず最後にfをつける 例:0.1f
12

制限時間の正解

38

成功していれば、LimitTimeが0になったらスタートに戻されます
50

お疲れ様でした♪

プログラミングの完成プロジェクト

こちらにありますのでご自由にどうぞ♪

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

Unityで会話機能を作る

Unityの便利機能を使いこなそう #2 CharacterControllerでプレイヤーの移動とジャンプを実装しよう【マリオ風、バイオハザード風、フォートナイト風】

CharacterControllerの説明 さて、今回はCharacterControllerというものを使って、プレイヤーの移動とジャンプを実装していきたいと思います CharacterContr …

no image

UnityRemoteで起動するスマホを指定する

スマホをPCに接続します Edit → ProjectSettings をおします Editor → Noneをおして、 iPhoneならiPhoneの機種、 androidなら Any androi …

no image

Unityで3Dシューティングアクションを作ろう④

今回やること 体力ゲージ ゲームオーバー ゲームクリア シーンを変えた時に画面が暗かった時の対応 体力ゲージ 体力ゲージの設定は以下の手順を踏みます。 HandleSlideAreaを削除する(これを …

UnityのButtonの使い方

ボタンを作る Create → UI → Buttonをおします ボタンの設定 座標を設定します ※0,0,0にすると画面の中央にきます ①通常時の色 ②マウスカーソルが重なった時の色 ③ボタンがおさ …

ゲタバコ倶楽部へようこそ

  • 36392総閲覧数:
  • 115今日の閲覧数:
  • 23586総訪問者数:
  • 82今日の訪問者数:

住所
Akita,Japan

営業時間
月~日: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動、プログラミングの習得方法を発信するページです。
仕事のご依頼、メッセージ等、サービス概要をご覧の上で、お気軽にご連絡ください。

getabakosensei@gmail.com