Unityでゲーム開発をしていて慣れてくると、いろいろなアニメーションに挑戦したくなると思います。
 
まずは第一歩として、動く床を作ってみましょう。
 
準備として動かしたい床オブジェクトにMoveFloorというタグを付けておきましょう。
 
C#

 public Vector3 defaultScale = Vector3.zero;
    void Start () 
    {
        defaultScale = transform.lossyScale;
    }
    
    void Update () 
    {
        Vector3 lossScale = transform.lossyScale;
        Vector3 localScale = transform.localScale;
        transform.localScale = new Vector3(
                localScale.x / lossScale.x * defaultScale.x,
                localScale.y / lossScale.y * defaultScale.y,
                localScale.z / lossScale.z * defaultScale.z
        );
    }

void OnCollisionEnter(Collision  collision) { 
		if (transform.parent == null && collision.gameObject.tag == "MoveFloor") {
			var emptyObject = new GameObject();
			emptyObject.transform.parent = collision.gameObject.transform;
			transform.parent = emptyObject.transform;
		}

	}

void OnCollisionExit(Collision collision){
		if (transform.parent != null && collision.gameObject.tag == "MoveFloor")
		{
			transform.parent = null;
		}
	}

OnCollisionEnterで、動く床に乗った時に床とプレイヤーを親子関係にしています。
そして、OnCollisionExitで、床から離れたら親子関係をなくしています。
 
最初の方で、scaleをいじっているのは、親子関係になるとサイズまで影響されてしまうので、動く床に乗った瞬間プレイヤーが変な形になってしまうことがあるのですが、最初にScaleを取得しておいて、固定をすることによって影響されるのを防いでいます。
 
このスクリプトをそのままアタッチすれば動くはずです...




おすすめの記事