【Unity】スマブラっぽくダブルクリックで床を抜ける処理を作ってみた


ダブルクリックで床を抜ける


今回は、スマブラっぽい感じの床抜け処理を書いてみました。
必要最低限の処理だけなので、ご利用は拡張的に!

※使用しているUnityのバージョンは5.5.2f1です。

スクリプト


2Dで作ってあるので、使用したコンポーネントはCircleCollider2DとRigidbody2Dです。
コンポーネントやOnTriggerExit2Dを3D用に書き換えれば3Dでもいけます。

using UnityEngine;

public class DoubleClickThroughFloor : MonoBehaviour {

	CircleCollider2D myCol;

	// クリックした時間保存用の変数
	double clickTimeAt;

	// ダブルクリックと判定するクリック間隔
	double asDoubleClickTime = 0.25;

	void Start() {
		myCol = GetComponent<CircleCollider2D>();
		// 現在時間で初期化
		clickTimeAt = Time.time;
	}

	void Update () {

		// 床抜け中ではない時に、スペースキーを押したら
		if (!myCol.isTrigger && Input.GetKeyDown(KeyCode.Space)) {

			// キーを押した間隔を時間から算出
			double interval = Time.time - clickTimeAt;

			// 間隔がダブルクリック判定時間以下であれば
			if (interval < asDoubleClickTime) {
				// 通り抜けON
				myCol.isTrigger = true;
			}

			// クリックした時間を保存
			clickTimeAt = Time.time;
		}
	}

	// 通過が終了したらisTriggerをOFFにする
	void OnTriggerExit2D(Collider2D collision) {
		myCol.isTrigger = false;
	}
}

仕掛けとしては、ダブルクリックとして認識したら、isTriggerをONにして通過開始。
OnTriggerExit2Dで通過終了を検知したら、isTriggerをOFFにする。です。

ご参考までに。

最近よく読まれている記事

【Unityのプログラミング力向上】C# 練習問題 4
【Unityのプログラミング力向上】C# 練習問題 3

記事一覧にもどる

  • このエントリーをはてなブックマークに追加

PAGE TOP