Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

別のゲームオブジェクトに紐づいたスクリプトを操作する

shuzo-kino.hateblo.jp
の続き。
本当はこちらを先にやりたかったのですがネ。

今回は、別のゲームオブジェクトに紐づいたC#スクリプトの変数を変化させ、アクションを発火させる動きをつくります。

実際のところ

capRot.cs

カプセルを回転させるスクリプト
スペースキーをおすか、スクリプト外からrotFlagをオンにすることで赤いタイ米状のカプセルオブジェクトが高速回転するという画期的かつ創造的なサンプルとなっております。

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

public class capRot : MonoBehaviour
{
    float rotSpeed = 0.0f;
    public bool rotFlag = false;

    // Update is called once per frame
    void Update()
    {
        if( Input.GetKey(KeyCode.Space) || rotFlag) {
            this.rotSpeed = 10.0f;
        }
        transform.Rotate(0,0,this.rotSpeed);
        this.rotSpeed *= 0.96f;
    }
}

cube2capRot.cs

ボタン代わりのキューブに割り付けるスクリプト

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

public class cube2capRot : MonoBehaviour
{
    public GameObject myObj;
    public GameObject RotateObj_forButton;

    private void OnTriggerEnter(Collider other)
    {
        RotateObj_forButton.GetComponent<capRot> ().rotFlag = true;
    }

    private void OnTriggerExit(Collider other)
    {
        Destroy(RotateObj_forButton);
        Destroy(myObj);
    }
}

配下のコンポネントにアクセスする構文が普段Pythonとかシェルスクリプト書いてる人間には新鮮。
LotYで一年に一個新しい言語をと書いてましたが、まさにこういう体験をするためなんでしょうね。

結果

ブロックに触れると、赤いタイ米が高速回転します。
前回実装したアクションから、タイ米と箱が消える仕様も同様。
f:id:shuzo_kino:20210508021142p:plain