無限にジャンプしないようにする
前回の(https://www.kpro.cfbx.jp/18)続きです
今回は無限にジャンプしないようにする方法を紹介します。
1、判定用のオブジェクトを作る
まず判定用のオブジェクトを作ります。
作り方
- Hierachyの前回作った主人公を右クリック
- 2D ObjectのSpriteを左クリックする
- Sprite RendererのSpriteの右端の⦿を左クリックして透明なモノを、左クリックする
- 主人公の当たり判定より下に置く
- ScaleのXとYの値を主人公より小さくする
- Add Componentを左クリックするPhysics 2Dを左クリックする
- Box Collider 2Dを左クリックする
- Is Triggerにチェックをつける
2、判定用のオブジェクトのプログラムを作る
次に判定用のオブジェクトのプログラムを作ります。
- Assetsを右クリックしてCreateにカーソルを合わせる
- その中のC# scriptを左クリックする
- 名前をジャンプ判定にする
- 作ったジャンプ力をHierarchyの中の判定用のオブジェクトにドラッグアンドドロップする
- 作ったジャンプ力をダブルクリックでIDE(プログラムを書いたりするソフト)を起動する
- 次のプログラムのように書く
ジャンプ判定
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、ジャンプ力のコードを書き換える
最後にジャンプ力のコードを書き換えます。
- ジャンプ力のコードをダブルクリックでIDE(プログラムを書いたりするソフト)を起動する
- 次のプログラムのように書き換える
ジャンプ力
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;
}
}
}
}
これで無限にジャンプできなくなります。