無限にジャンプしないようにする

プログラミング2d, unity

前回の(https://www.kpro.cfbx.jp/18)続きです

今回は無限にジャンプしないようにする方法を紹介します。

1、判定用のオブジェクトを作る

まず判定用のオブジェクトを作ります。

作り方

  1. Hierachyの前回作った主人公を右クリック
  2. 2D ObjectのSpriteを左クリックする
  3. Sprite RendererのSpriteの右端の⦿を左クリックして透明なモノを、左クリックする
  4. 主人公の当たり判定より下に置く
  5. ScaleのXとYの値を主人公より小さくする
  6. Add Componentを左クリックするPhysics 2Dを左クリックする
  7. Box Collider 2Dを左クリックする
  8. Is Triggerにチェックをつける

2、判定用のオブジェクトのプログラムを作る

次に判定用のオブジェクトのプログラムを作ります。

  1. Assetsを右クリックしてCreateにカーソルを合わせる
  2. その中のC# scriptを左クリックする
  3. 名前をジャンプ判定にする
  4. 作ったジャンプ力をHierarchyの中の判定用のオブジェクトにドラッグアンドドロップする
  5. 作ったジャンプ力をダブルクリックでIDE(プログラムを書いたりするソフト)を起動する
  6. 次のプログラムのように書く

ジャンプ判定

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

public class ジャンプ判定 : MonoBehaviour {
	public ジャンプ力 ジャンプ力;

	void Start () {
		
	}
	private void OnTriggerEnter2D (Collider2D collision)
	{
		ジャンプ力.地面についている = true;
		ジャンプ力.ジャンプしている = false;
	}

	private void OnTriggerExit2D (Collider2D collisiontwo){
		ジャンプ力.地面についている = false;

	}
}

3、ジャンプ力のコードを書き換える

最後にジャンプ力のコードを書き換えます。

  1. ジャンプ力のコードをダブルクリックでIDE(プログラムを書いたりするソフト)を起動する
  2. 次のプログラムのように書き換える

ジャンプ力

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

public class ジャンプ力 : MonoBehaviour {
	public bool ジャンプしている;
	public bool 地面についている;
	Rigidbody2D jumpppwer;
	public int jumpmax = 500;
	public int jumpgravity = 100;

	void Start () {
		jumpppwer = GetComponent<Rigidbody2D>();
	}

	void FixedUpdate () {
		if (地面についている == true){
			if (Input.GetKeyDown (KeyCode.Space)) {

				jumpppwer.AddForce (Vector2.up * jumpmax);
				地面についている = false;
				ジャンプしている = true;
			}
		}
		if (ジャンプしている == true){
			if (Input.GetKeyUp (KeyCode.Space)) {
				jumpppwer.AddForce (Vector2.down * jumpgravity);

				ジャンプしている = false;
			}
		}
	}
}

これで無限にジャンプできなくなります。