[Unity] 2. 벡터와 단위 벡터
- Fastcampus의 C#과 유니티로 배우는 게임 개발 올인원 패키지 Online - 유니티 개발을 위한 필수 수학&물리 강의를 수강하면서 정리한 내용입니다.
1. 벡터 강의 정리
2. 실제 사용 실습
마우스의 위치에 따라 가이드라인이 생기고 미사일이 발사되는 예제
1) 마우스 위치 변환
//현재 마우스의 위치를 게임 내의 Position 값으로 변환
void MouseCheck()
{
Vector2 mousePos = Input.mousePosition;//마우스의 위치값 받음
//현재 마우스의 위치를 게임 내의 Position 값으로 변환
//게임 내에서의 마우스 위치 Position 값으로 변환
mousePos = mainCamera.ScreenToWorldPoint(mousePos);
//플레이어 위치
Vector3 playerPos = transform.position;
//마우스 포지션이 도착지점
//플레이어 위치가 시작지점
//마우스 포지션 - 플레이어 위치 = 가이드라인 방향
Vector2 distanceVec = mousePos - (Vector2)playerPos;
//가이드라인 활성화?
//일정 거리 안에 들어가면 활성화O
//magnitue 이용하면 거리(길이) 알 수 있음
//sqrMagnitude : 거리의 제곱 알 수 있음
guideLine.SetActive(distanceVec.magnitude < ditectionRange ? true : false);
//가이드라인 방향을 distanceVec의 방향벡터로 설정하겠다는 뜻
//방향벡터를 설정하는 것은 벡터.normalized
// distanceVec.normalized == distanceVec/distanceVec.magnitude
guideLine.transform.right = distanceVec.normalized;
}
-
ScreenToWorldPoint : 현재 마우스의 위치를 게임 내의 Position 값으로 변환
게임 내에서의 마우스 위치 Position 값으로 변환
- 변환 안하면 화면 해상도 좌표로 뜸
ex) 변환 전 mousePosition (0,0) -> 화면 왼쪽 아래 꼭지점
변환 후 mousePosition (0,0) -> 화면 중앙 -
magnitude : 거리(길이) 알 수 있음
-
normalized : 방향벡터로 바꿔줌
*방향에 관련된 것은 모두 방향벡터로 설정해야 함
2) 총알 발사
void Update()
{
MouseCheck();
//마우스 왼쪽 버튼 입력
//총알 발사
if (Input.GetMouseButtonDown(0))
{
Vector2 mousePos = Input.mousePosition;
mousePos = mainCamera.ScreenToWorldPoint(mousePos);
Vector3 playerPos = transform.position;
Vector2 dirVec = mousePos - (Vector2)playerPos; //그냥 벡터를 만듦
dirVec = dirVec.normalized; //방향벡터로 만듦
GameObject tempObject = Instantiate(bulletObject, bulletContainer);
//총알의 오른쪽 방향을 dirVec으로 설정
tempObject.transform.right = dirVec;
//총알이 플레이어보다 살짝 앞에서 발사
tempObject.transform.position = (Vector2)playerPos + dirVec * 0.5f;
//플레이어 넉백(반대방향으로 이동)
transform.Translate(-dirVec);
}
}
Author And Source
이 문제에 관하여([Unity] 2. 벡터와 단위 벡터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeju6540/Unity-2.-벡터와-단위-벡터저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)