Unity

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

投稿日:2020年1月10日 更新日:

今回作るゲーム

移動やジャンプをして、ゴールを目指すシンプルなアクションゲームです

今回やること

  • プレイヤーの移動
  • プレイヤーのジャンプ
  • アイテムを配置する
  • 制限時間を作る

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

こちらこちらよりパッケージをダウンロードしてプロジェクトに入れて下さい
一応元データも載せておきます
プロジェクトの入れ方はこちら

プレイヤーの移動の作成

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

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

C#にはいくつかルールがあります。

①スクリプトを作成した時につけた名前と、スクリプトの名前は一致させる
②何をどこに入力するのかエリアを理解する
③エリアとエリアは{}でとじる
④行の最後は;をつける

以上の点をしっかりおさえておきましょう!

スクリプトの作成

Create → C#Scriptをおします

スクリプトの名前はPlayerにします

プレイヤーの移動は
WS:前進後退、AD:方向転換、スペース:ジャンプにします
早速、Assets → ScriptsにあるPlayerスクリプトをダブルクリックして開きます
1-2

コードの入力

では実際に、コードを書いていきましょう。
Scratchで表すと、

というコードを打っていきます

表はこちらにあります。

①このブロックは「ずっと」ではさまれているので、
ゲーム開始後ずっと実行するエリア」に入力します。
②「もし~なら」を入力していきます。表を見てみると、
となっています。条件は違うので()の中は空欄にし、
と入力しましょう。
③条件は「Wキーが押されたら」です。
なので、if(){}の()の中にInput.GetKey(KeyCode.W))をいれます。
となります。
④実行する内容は「10歩動かす」です。
となっているので、
if(Input.GetKey(KeyCode.W))){}の{}の中に、
transform.position += transform.TransformDirection(Vector3.forward * 10);をいれます。
となりました。

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

入力したら、Unityに戻り、Playerスクリプトをプレイヤーにドラッグ&ドロップします

テストプレイをしてWキーをおしてみると…
14
早すぎて全部突き抜けていきましたね
なので、10の後に「 * Time.deltaTime」を追加で入力しましょう

Time.deltaTimeとは?
これを移動の後に入力すると処理の速度が一定になり、ちょうどいい感じになる

同様に他のブロックも入力してみましょう。

○度回すは
です

再生ボタンを押してエラーがないか、確認しましょう。

入力したら答え合わせしましょう
20.png

プレイヤーの重力処理とジャンプの作成

UnityではRigidbodyというものがあり、これをつけると自動で重力がかかるようになります
まずはRigidbodyをつけ、その後、ジャンプのプログラミングをしていきます
プレイヤーを選択し、AddComponentをおし、検索欄に「ri」と入力し、Rigidbodyを選択します

Contraintsの横の▶︎をおし、FreezeRotationのチェックを全ていれます

画像のような内容のスクリプトを入力するのですが、少し難しい内容になります
以下のスクリプトをそのまま打ちましょう
説明については、コメントで記入してありますので、参考にしてください

入力するスクリプト

変数の説明

コードを見てみるとrbやGroundedという変数が使われています
変数についてはUnityでは沢山の種類があるので、詳しくは以下を参考にして下さい

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

Rigidbodyなどのコンポーネントをプログラミングで使えるようにする

基本的にはどのコンポーネントもルールは同じです

①変数の部分に
というようにprivate “コンポーネントの名前” “変数の名前”を入力します
②void Start(){}の中に
を入力する
③命令を実行する箇所に任意の命令を入れる
今回はAddforceというRigidbodyに力をかける命令を与えています

物に触れた時の説明

①衝突処理を入力する箇所に入力します
②触れた時の処理は
の{}の中に記述します
③触れたオブジェクトが何かはオブジェクトの名前、またはオブジェクトについているタグで判断します
今回はGroundというタグがついていたら処理が実行されるようになっています
※タグは今回のチュートリアルでは予めつけてあります

テストプレイをしてみると
22
スペースキーでジャンプができるので、ゴールを目指しましょう

カメラがプレイヤーについていくようにする

MainCameraをプレイヤーにドラッグ&ドロップします

そうするとカメラがプレイヤーの子オブジェクトになり、プレイヤーについていくようになります

アイテムを配置する

Item → Prefabsにあるアイテムをドラッグ&ドロップします
32

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

いっぱい置いてステージを豪華にしましょう。

お疲れ様でした♪

このサイトについて

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

検索

このサイトについて

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

検索

-Unity

執筆者:


comment

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

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

関連記事

no image

C#の構造とルール

Unityのデフォルトのスクリプト

C#スクリプトはいくつかエリアに分かれているので、まずはそのエリアについて解説します C#の機能や …

no image

Unityのゲーム画面を動画にする【mac】

QuickTimePlayer を起動します MaximizeOnPlay をおして、▶ をおしてテストプレイを始めます QuickTimePlayer のアイコンをおしてファイルをおし …

no image

体力ゲージとダメージ処理

Create → UI → Slider とおします Sliderの中にあるHandle Slide Area を削除します Sliderを選択し、POSで位置を調整したり、Scaleで大きさを調整し …

no image

NavMeshAgentによる敵の徘徊、接近AI

今回やること 敵が移動する範囲の設定 NavMeshAgentの追加と設定 徘徊接近攻撃AIスクリプトの記述 スクリプトの設定 敵が移動する範囲の設定 NavMeshAgentの追加と設定 徘徊接近攻 …

2月6日の勇者ああああでペンギンズのノブオさんがプレゼンしてたゲームの基本だけ作ってみた

右上のボタンをクリックして、引っ越しの人をゴールまで導いてください

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

  • 65537総閲覧数:
  • 102今日の閲覧数:
  • 45918総訪問者数:
  • 89今日の訪問者数:

住所
Akita,Japan

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

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

getabakosensei@gmail.com