- 投稿日:2021-09-16T20:50:36+09:00
オブジェクトに乗っても落下しないようにする
1.はじめに スーパーマリオ・ロックマン等のアクションゲームにありがちな動く床。はじめての制作だとプレイヤー物に乗っても動く床に沿って動かなかったり、下のGif動画のように落ちることがある。 解決策はとても簡単なものだが、ネタとしてはアリだと思いアウトプットします。 ここだと床の上昇のみでの紹介になるが、この方法はそれ以外の動きにも対応が可能です。 なおここでは接触判定等の紹介はしません。 2.スクリプト スクリプトは単純明快で動く床の子オブジェクトになればいいです。注意点は動く床から離れた場合、親子関係を解除しないと動く床の挙動に影響され続けてしまいます。 using UnityEngine; public class QiitaObject : MonoBehaviour { //物体と接触したら物体の子オブジェクトとなる private void OnCollisionEnter(Collision collision) { transform.parent = collision.gameObject.transform; } //物体から離れたら物体の子オブジェクトを解除する。 private void OnCollisionExit(Collision collision) { transform.parent = null; } } 3.最後に 親子関係の扱いはVR制作だと物を掴む等で使っていましたが、それ以外の用途では使うことがなかったので、とても勉強になった。 これ以外にももっと良い方法があるかもしれませんが、その時は加筆をしたいと思います。
- 投稿日:2021-09-16T01:01:12+09:00
Unity C# Invoke()について、
Unity Invokeでググると、MonoBehaviour.Invoke() がHITし過ぎる。 しかし本当に知りたいのは .NETのMethodBase.Invoke() だったのだ。 何という事でしょう、、、サンプルにあるInvoke()は指定時間後に実行されると思ったら、パラメータは違うし挙動も違うし、 大混乱という人が少なからずいるんじゃないかと思いまして、 私?私はググったから大丈夫でしたよ? なんてね。