前回の質問に続きUnity5について質問させていただきます。
現在動く床を作成しています。 その際、プレイヤーが床に乗ったらともに動く。という使用にしているのですが、横方向での動作は確認できたのですが、縦方向では画像のようにキャラクターがたまに浮いてしまいます。
下記に動く床(床自体が上下に動く)のスクリプト。
そしてキャラクターを連動して動かすスクリプト。(こちらは、床の上にColliderを作り床の上にプレイヤーがきたら、床の子オブジェクトにキャラクターを入れる。という仕様です)
この2つを貼っておきます。どうすれば床の上で浮かないでいられるか教えてください。 お願いします。
今色々試してみましたが、子の床に乗った後に↑を使っての移動時には浮かないことがわかりました。 十字キーの→↓←を押すと浮いてしまいます。 一度浮いたら基本的に浮きっぱなしです。
C#
1<動く床> 2using UnityEngine; 3using System.Collections; 4 5public class MoveFloor_tate : MonoBehaviour 6{ 7 8 private Vector3 initialPosition; 9 10 void Start() 11 { 12 13 initialPosition = transform.position; 14 15 } 16 17 void Update() 18 { 19 20 transform.position = new Vector3(initialPosition.x, initialPosition.y + Mathf.Sin(Time.time) * 2.0f , initialPosition.z); 21 22 } 23 24}
C#
1<プレイヤーを連動させる> 2using UnityEngine; 3using System.Collections; 4 5public class MoveFloor_player_tate : MonoBehaviour 6{ 7 8 void OnTriggerEnter(Collider other) 9 { 10 Debug.Log("TriggerEnter"); 11 if (other.gameObject.tag == "Player")//プレイヤーが乗った 12 { 13 if (other.gameObject.transform.parent == null)//親子設定がない 14 { 15 **other.gameObject.GetComponent<Rigidbody>().isKinematic = true; /*isKinematicをONに*/** 16 other.gameObject.transform.parent = transform;//親子を設定 17 Debug.Log("parenting"); 18 } 19 } 20 } 21 22 void OnTriggerStay(Collider other) 23 { 24 Debug.Log("TriggerStay"); 25 } 26 27 void OnTriggerExit(Collider other) 28 { 29 Debug.Log("TriggerExit"); 30 if (other.gameObject.tag == "Player") 31 { 32 if (other.gameObject.transform.parent != null) 33 { 34 ** other.gameObject.GetComponent<Rigidbody>().isKinematic = false;/*isKinematicをOFFに*/** 35 other.gameObject.transform.parent = null; 36 Debug.Log("unparenting"); 37 } 38 } 39 } 40} 41