前回の質問に続き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.transform.parent = transform;//親子を設定 16 Debug.Log("parenting"); 17 } 18 } 19 } 20 21 void OnTriggerStay(Collider other) 22 { 23 Debug.Log("TriggerStay"); 24 } 25 26 void OnTriggerExit(Collider other) 27 { 28 Debug.Log("TriggerExit"); 29 if (other.gameObject.tag == "Player") 30 { 31 if (other.gameObject.transform.parent != null) 32 { 33 other.gameObject.transform.parent = null; 34 Debug.Log("unparenting"); 35 } 36 } 37 } 38}