0407 오브젝트 호출, 거리 계산, ui 반영, 사운드 삽입

2021. 4. 7. 10:59unity

translate = 게임 오브젝트를 현재 좌표에서 인수 값만큼 이동시키는 메서드
좌표는 절대적(월드 좌표계)이 아닌 상대적(로컬 좌표계), 현재 위치에서 이동한다는 뜻.

스와이프 길이를 조정하려면:
클릭을 시작한 좌표를 startPos와 클릭이 끝난 좌표를 endPos에 대입,
GetMouseButtonUp/Down(0) true값 반영
endPos - startPos 

using UnityEngine;

public class CarController : MonoBehaviour
{
    float speed = 0;
    Vector2 startPos;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            //마우스 클릭을 시작한 좌표
            this.startPos = Input.mousePosition;
        }
        else if (Input.GetMouseButtonUp(0)) 
        {
            //마우스 버튼에서 손가락을 떼었을 때 좌표
            Vector2 endPos = Input.mousePosition;
            float swipeLenght = endPos.x - this.startPos.x;

            //스와이프 길이를 처음 속도로 변경한다.
            this.speed = swipeLenght / 500.0f;

            //효과음을 재생한다.
            GetComponent<AudioSource>().Play();
        }
        transform.Translate(this.speed, 0, 0);
        this.speed *= 0.98f;
    }
}

 

UI 스크립트를 사용하려면, Using Unity Engine.UI를 꼭 임포트 하기

직접 만든 스크립트도 컴포넌트의 일종이므로 GetComponent메서드로 구현 가능
ex) car.GetComponent<Car Controller>().Run();

using UnityEngine;
using UnityEngine.UI;

public class GameDirector : MonoBehaviour
{
    GameObject car;
    GameObject flag;
    GameObject distance;
    // Start is called before the first frame update
    void Start()
    {
        this.car = GameObject.Find("car"); //Find 메서드로 씬 안에서 오브젝트를 찾고
        this.flag = GameObject.Find("flag");
        this.distance = GameObject.Find("Distance");
    }

    // Update is called once per frame
    void Update()
    {
        float length = this.flag.transform.position.x - this.car.transform.position.x; //씬 안에서 좌표값 설정
        if (length >=0)
        {
            this.distance.GetComponent<Text>().text = "목표 지점까지" + length.ToString("F2") + "m";
        }
        else 
        {
            this.distance.GetComponent<Text>().text = "게임 오버";
        }
        
    }
}

AudioSource컴포넌트는 그냥 검색해서 추가한 후, 파일 끌어다 붙혀주면 된다.

'unity' 카테고리의 다른 글

0407 애니메이션 구현하기  (0) 2021.04.07
0407 화살 피하기 게임  (0) 2021.04.07
0405 오브젝트 회전시키기  (0) 2021.04.05
0405 Magnitude 백터의 감산  (0) 2021.04.05
0405 기본  (0) 2021.04.05