Unity3D/2Dで特定のオブジェクトに触れたときにもう一方の特定のオブジェクトを瞬間移動させる

Unity3D/2Dで、特定のオブジェクトに触れたときにもう一方の特定のオブジェクトを瞬間移動させる方法です。
忘れていて1時間ほど無駄にしたので書いておきます。

コード

コードは以下の通りです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class (スクリプト名) : MonoBehaviour
{
    //↓ここと
    public GameObject (移動させるオブジェクトの名前など(例:ゲームであればplayerなど));

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

//↓ここから
    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("(移動させるオブジェクトのタグ(例:ゲームであればPlayerなど))"))
        {
            (書き加える最初の行で指定した名前).transform.position = new Vector3((移動場所を"x, y, z"と書く));
        }
    }
//↑ここまで
}

なお、上記のスクリプトは3D用で、2Dの場合は

    void OnTriggerEnter(Collider other)

ここを

    void OnTriggerEnter2D(Collider2D other)

こうするだけです。

実装

上記のコード(またはそれを含んだコード)を実装するには、
・OnTriggerが有効になっているオブジェクト
・移動させるオブジェクトではないオブジェクト
に入れて、コンポーネントの欄にある空欄のようなところに移動させるオブジェクトをドラック&ドロップします。
これで動きます。

この記事が気に入ったらサポートをしてみませんか?