0407 오브젝트 호출, 거리 계산, ui 반영, 사운드 삽입
2021. 4. 7. 10:59ㆍunity
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 |