前提・実現したいこと
Unityにてゲームを作っています。
動く床を作ってみたのですが、キャラクターがついていきません。
###状況
まず、親子関係などは以下のようになっています。
(A>BでAが親Bが子という意味とする)
空のオブジェクト>プレイヤー>動く床を検知するコライダーをもつ空オブジェクト(isTrigger)
動く床
空のオブジェクト>プレイヤー
のところですが、これはDontDestroyOnLoadのスクリプトを空のオブジェクトに貼り付けて、シーン切り替えで消したくないものを一括で指定したいと思い、こうしています。
プレイヤーには、
・Charactercontroller
・Charactercontrollerを用いた移動などのスクリプト
・Rigidbody(Is Kinematic)
を追加しています。(勉強中に知った方法がCharactercontrollerを使う方法だったのでとりあえずこうしています)
##試したこと
・動く床はtransform.Translateで動かしています。
・Playerは普段はCharactercontroller.Moveで動かしています。
(Rigidbodyはコライダーを当たり判定に使用するためだけに追加しています)
・「動く床を検知するコライダーを持つ空オブジェクト」にスクリプトを追加し、
以下のように記述しています。
C#
1 private void OnTriggerEnter(Collider other) 2 { 3 if (other.tag == "動く床タグ") 4 { 5 player.transform.SetParent(other.transform); 6 } 7 } 8 9 private void OnTriggerExit(Collider other) 10 { 11 if (other.tag == "動く床タグ") 12 { 13 プレイヤー.transform.SetParent(空のオブジェクト.transform); 14 } 15 }
・他にも、
OnTriggerStay中に
プレイヤー.GetComponent<プレイヤースクリプト>().(プレイヤー移動ベクトル) += (動く床移動ベクトル)
と記述するというのを試しましたが、やはり動きませんでした。
・OnCollisionにして動く床検知用コライダーのIs Triggerを無効にしましたが、動きませんでした。
・悩んでいてなんとなくRigidbodyのInterpolateをNoneからInterpolateにしてみたらなぜか動きましたが、
動いた理由がわからないのと普段のキャラクターの動作が不自然になるという問題が発生し、やめました
私はUnityとプログラミングの初心者なので、親子関係の設定やコンポーネントの追加の仕方が滅茶苦茶だったり、
とても見苦しいコードを書いていたりするかもしれませんがご容赦ください。
ご回答宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/30 13:15