こどもから目指すゲーム開発者 #11『Unityでキャラを動かす2』

こんにちは。KTです。

今回はキャラクター下のようにスペースキーを使ってジャンプができるようにします。

・スペースキーでジャンプができる。

ジャンプをできるようにする

ではPlayerスクリプトを開いてVisualStudioを起動してください。
プログラムの例を書きます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    // RigidBody2Dが入るrbodyという記号を用意します。
    Rigidbody2D rbody;

    // Start is called before the first frame update 最初だけカッコ内のプログラムが流れます。
    void Start()
    {
        // プレイヤーキャラクターに設定したRigidBody2Dをrbodyに入れます。
        rbody = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame 1フレームごとにカッコ内のプログラムが流れます。
    void Update()
    {
        // floatは後述の記号は数値しか入れられない意味。xに←キーが押されたら-1、→キーが押されたら1、何も押されてない場合は0が代入されます。
        float x = Input.GetAxisRaw("Horizontal");

        // float xのxです。キーが押されていない場合、カッコ内のプログラムが動きます。
        if (x == 0)
        {
            // キャラクターのx軸方向に0のスピードを加えます。(停止)
            rbody.velocity = new Vector2(0, rbody.velocity.y);
        }

        // float xのxです。←キーが押された場合、カッコ内のプログラムが動きます。
        if (x == -1)
        {
            // キャラクターのx軸方向に-5のスピードを加えます。(左に移動)
            rbody.velocity = new Vector2(-5, rbody.velocity.y);
            // キャラクターの絵を左向きにします。
            transform.localScale = new Vector2(-1, 1);
        }

        // float xのxです。→キーが押された場合、カッコ内のプログラムが動きます。
        if (x == 1)
        {
            // キャラクターのx軸方向に5のスピードを加えます。(右に移動)
            rbody.velocity = new Vector2(5, rbody.velocity.y);
            // キャラクターの絵を右向きにします。
            transform.localScale = new Vector2(1, 1);
        }

        // スペースが押されてy軸方向にキャラクターが動いていない場合、y軸方向にプラスの力を加えます。
        if (Input.GetKeyDown("space") && rbody.velocity.y == 0)
        {
            rbody.AddForce(Vector2.up * 400);
        }
    }
}

今回はプログラムの48~52行目にジャンプの処理を追加しました。
では上記のプログラムをコピーしてスクリプトに上書きしてください。

追加したプログラムの説明をします。

if (Input.GetKeyDown(“space”) && rbody.velocity.y == 0)
{
rbody.AddForce(Vector2.up * 400);
}

if:もし()内なら{}内のプログラムを実行する
Input.GetKeyDown(“space”):スペースが入力されたら反応する
&&:A && Bで「Aであり、Bである」
rbody.velocity.y == 0:キャラの上下方向の速度が0
rbody.AddForce(Vector2.up * 400);:キャラの上下方向にVector2.up * 400の力を加える
つまり、キャラクターが宙に浮いていないときにスペースが押されたらキャラクターをジャンプさせる。

プログラムの記述と保存が終わりましたらUnityにてゲームの実行をしてください。
スペースキーを押すとキャラクターがジャンプしたと思います。

しかしこのままでは壁にぶつかった時にキャラクターがざらざらしてるので引っかかってしまいます。
そこでキャラクターをつるつるにして壁に引っかからないようにします。

UnityのAssetsを右クリックしてCreate>Folderを選択して「Material」フォルダを作ってください。

続いて、Materialフォルダをダブルクリックしてフォルダ内で右クリックしてCreate>Physics Material 2Dを選択してください。
material:素材。

作ったマテリアルの名前をPlayerMaterialとつけてください。

そしてPlayerMaterialを選択した状態で画面右側のInspectorにあるFrictionを0にしてください。
Friction:摩擦=すべりやすさ。
Bounciness:弾性=跳ね返りやすさ。

次に下の図のようにPlayerオブジェクトを選択してPlayerMaterialをBox Collider 2DとCircle Collide 2DのMaterialに入れます。

次回はゴールを作ります。忘れずに保存をしてください。

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