【Unity】コンパスを表示する

投稿者: | 2020-06-30

画面にコンパスを表示してみます。どの方向を北にするか変えられるようにします。

まず、Imageオブジェクトを作ってコンパスの画像をアタッチします。ピボットを真ん中にして、RectTransformのZ軸のRotationの値を変えて回転させます。

空のゲームオブジェクトにスクリプトを付けます。

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

public class CompassTest : MonoBehaviour
{

    [SerializeField] Image image;
    [SerializeField] Transform player;
    [SerializeField] Text text;
    [SerializeField] float angleOfflet = 0f;

    RectTransform rt;
    Quaternion q;
    Quaternion offset;

    // Start is called before the first frame update
    void Start()
    {
        rt = image.rectTransform;
        offset = Quaternion.AngleAxis(angleOfflet, Vector3.up);
    }

    // Update is called once per frame
    void Update()
    {
        q = player.rotation * offset;
        q.z = q.y;
        q.y = 0f;

        text.text = q + "";

        rt.rotation = q;
    }
}

一人称キャラクターの回転によってImageを回転させます。キャラの体はY軸に沿って回転するので、これをZ軸に変えるとうまくいきました。

基準の向きを変えるには、キャラクターの回転値にY軸に沿った回転を加えたものを使います。デフォルトではVector3.forwardが北ですが、Vector3.rightを北にしたい時は-90度を加えます。

コメントを残す

メールアドレスが公開されることはありません。