どうもみなさん、名無し( @7shi321)です。
この回では前回のジャンプを応用して押す長さでジャンプ力を変化させたいと思います。
今回の#1ではその骨組みとなる部分を作成していきます。
押す長さでジャンプ力が変化するゲームの主な例
スーパーマリオ
主なゲームの例としてはスーパーマリオです。
マリオのジャンプは
ボタンを長く推していれば大ジャンプ
少ししか押していなければ小ジャンプ
といったボタンを押す長さでジャンプ力が変化します。
2Dマリオや3Dマリオなどのほとんどのマリオのアクションゲームにはジャンプ要素がありますが、そのほとんどは押す長さでジャンプ力が変化します。
押す長さでジャンプ力を変化させる方法

Hierarchyに左クリックでCreate Emptyをクリックしてキャラクターを作成します。

先程追加したGameObjectをHierarchyで選択し、
右側のInspectorでAdd Componentをクリック、
Sprite Renderer、Box Collider 2D、Rigidbody 2Dを追加します。

Sprite RendererのSpriteの右側にある点を押し、Assetsからキャラクターにしたい画像を選択します。
Assetsに画像がない場合は下のProjectに使用したい画像をドラッグ&ドロップします。

Box ColliderのEdit Collider、またはOffset(位置)、Size(大きさ)で当たり判定の形を合わせます。

Rigidbody 2DのGravity Scaleを0にし、Freeze RotationのZにチェックを入れます。

STEP 1で作成したGameObjectの上で左クリックし、Create Emptyをクリックして接地判定用のオブジェクトを作成します。

STEP 6で作成したGameObjectにBox Colider 2Dを追加します。

Is Triggerにチェックを入れます。
また、STEP 7で追加したBox Collider 2Dの形を設定します。
この当たり判定が地面に触れているときだけジャンプできるようになります。

STEP 6で追加したGameObjectにNew Scriptをクリックして次のコードを追加します。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GroundCheck : MonoBehaviour { //接地判定 public bool isGround = false; private void OnTriggerEnter2D(Collider2D col) { if (col.tag == "Ground") { isGround = true; } } private void OnTriggerExit2D(Collider2D col) { if (col.tag == "Ground") { isGround = false; } } }
まとめ
以上で接地判定の設定は終了です。
次は地面となるタイルマップの作成と押す長さでジャンプ力が変化するシステムを作っていきます。
よかったらツイッターフォローお願いします!
ts