ダブルクリックで床を抜ける
今回は、スマブラっぽい感じの床抜け処理を書いてみました。
必要最低限の処理だけなので、ご利用は拡張的に!
※使用しているUnityのバージョンは5.5.2f1です。
[Unity_317×90]
スクリプト
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の新着記事
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発
