728x90
- 벡터 : 크기와 방향을 함께 가지고 있는 것
A(2,4)에서 B(6,7)로 이동하는 벡터는 B-A를 해주면 된다.
(6, 7) - ( 2, 4) = (4,3) / 피타고라스 정리를 사용해서 빗변의 길이는 5이다.
※방향 벡터를 만들어주기 위해서는 크기(빗변)를 1로 만들어주어야 한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
public class PlayerController2 : MonoBehaviour
{
public GameObject bulletObject;
public Transform bulletContainer;
public GameObject guideLine;
public float ditectionRange = 4f;
private Camera mainCamera;
//마우스의 위치에 따라서 가이드라인이 생기고 미사일이 발사
//카메라 위에 마우스의 좌표가 어떻게 나오는지 알기 위해서
void Start()
{
mainCamera = Camera.main;
//현재 사용하고 있는 카메라 객체가 들어가게 됨
}
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; //normalized를 해줘야 방향벡터
GameObject tempObject = Instantiate(bulletObject, bulletContainer);
tempObject.transform.right = dirVec;
//총알의 오른쪽 방향을 dirVec(방향벡터)로 설정
tempObject.transform.position = (Vector2)playerPos + dirVec * 0.5f;
//총알이 플레이어보다 살짝 앞에서 발사(자연스러움)
transform.Translate(-dirVec); //플레이어가 반대 방향으로 이동
//dirVec의 정반대의 벡터를 만들기 위해서 (-)를 곱해주면 된다
}
}
void MouseCheck()
{
Vector2 mousePos = Input.mousePosition; //마우스의 위치값을 받음
mousePos = mainCamera.ScreenToWorldPoint(mousePos);
Debug.Log(mousePos);
//현재 마우스의 위치를 게임 내의 Position 값으로 변환(ScreenToWorldPoint)
Vector3 playerPos = transform.position;
Vector2 distanceVec = mousePos - (Vector2)playerPos; //마우스 위치(도착지점) - 플레이어 위치(시작지점)
guideLine.SetActive(distanceVec.magnitude < ditectionRange ? true : false); //삼항연산자
//가이드라인 활성화?
//일정 거리 안에 들어가면 활성화된다
//magnitude를 이용하면 거리를 알 수 있다
//sqrMagnitude를 이용하면 거리의 제곱을 알 수 있다
guideLine.transform.right = distanceVec.normalized;
//가이드라인의 오른쪽 방향을 distanceVec의 방향벡터로 설정
//방향벡터를 설정하는 것은 벡터.normalized
//distanceVec.normalized == distanceVec / distanceVec.magnitude(둘다 같은 개념)
//방향에 관련된 것은 전부 방향벡터로 설정
}
}
728x90
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
[Unity]벡터의 외적을 활용한 게임요소 구현하기 (0) | 2021.12.29 |
---|---|
[Unity]벡터의 내적을 활용한 게임요소 구현하기 (0) | 2021.12.29 |
[Unity]삼각함수를 활용한 미사일 슈팅 구현하기 (0) | 2021.12.28 |
유니티 Reflection Light 세팅하기 (0) | 2021.11.15 |
유니티 RagDoll 설정하기 (0) | 2021.11.15 |