Unity 2D로 적의 방향을 향해

2734 단어 스크립트2DC#Unity

1.0 목적



Unity 2D로 게임을 만들 때, 물체를 적과 같은 특정 물체의 방향을 향하게 하는 방법입니다. (아래 이미지처럼)
여러가지 방법이 있다고 생각합니다만, 1번 심플하다고 생각되는 방법을 망비록으로서 기사합니다.
이번에는 스크립트로 구현합니다.

2.0 Unity 3D에서는



3D에서는 LookAt 함수가 있으며, 이 함수를 사용하면 쉽게 지정한 객체로 방향을 바꿀 수 있습니다.

3.0 Quaternion 클래스



Unity에서는 회전을 취급하기 위한 Quaternion(쿼터니언)이라는 클래스가 준비되어 있습니다.

4.0 FromToRotation 함수



Quaternion 클래스에는 FromToRotation 함수가 있습니다. 인수는 Vector3의 fromDirection(향하고 있는 방향으로부터)과 toDirection(향하고 싶은 방향)입니다. fromDirection에서 toDirection으로의 회전을 만들 수 있습니다.
통상, 월드 공간에서 Transform 를 회전시켜, 좌표의 1 개, 예를 들어, y 좌표를 타겟의 방향 toDirection 에 향하게 하기 위해서 사용합니다.

5.0 C# 스크립트



그럼 스크립트입니다.

RotationTest.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotationTest : MonoBehaviour
{
    public Transform arrowTrans // 動かすオブジェクトのトランスフォーム
    public Transform ballTrans // ターゲットのオブジェクトのトランスフォーム

    // 向きたい方向を計算
    Vector3 dir = (ballTrans.position - arrowTrans.position);

    // ここで向きたい方向に回転させてます
    arrowTrans .rotation = Quaternion.FromToRotation(Vector3.up, dir)
}

Vector3.up은 Vector3(x, y, z) = (0, 1, 0)과 같습니다. 단순히 객체의 위쪽 방향을 나타냅니다.
이제 원하는 방향으로 향하게 됩니다.
주) 아래 그림과 같이 실시간으로 방향을 바꾸려면 Update 함수 등에서 연속 처리가 필요합니다.

좋은 웹페이지 즐겨찾기