22.01.24 Ray를 이용하기
2022. 1. 24. 20:48ㆍUnity3D/수업 내용
ChestNutControl cn = Instantiate(chestNut).GetComponent<ChestNutControl>();
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.red, 1.0f);
Vector3 worldDir = ray.direction;
cn.Shoot(worldDir.normalized * 2000f);
위 코드는 밤송이 던지기 게임에 작성된 코드이다.
ray.direction은 ray의 방향을 나타낸다.
화면 상에서 마우스를 클릭했을 때, 커서 위치에서 ray를 발사한다.
그래서 이 ray의 방향을 활용할 수 있는 게임에 적당하다. (1인칭, 던지기류)
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.red, 1.0f);
RaycastHit hit;
Physics.Raycast(ray, out hit, 1000f);
isMoving = true;
anim.SetBool("IsMoving", isMoving);
dir = hit.point;
dir = new Vector3(dir.x, 0f, dir.z);
transform.LookAt(dir);
위 코드는 탑다운 뷰의 rpg 게임에 작성된 코드이다.
Raycast는 위에서 발사한 ray광선이 나아가던 중에 부딪힌 콜라이더의 충돌 정보를 out을 통해 알려준다.
이번에는 탑다운 뷰에서 이동 명령을 내릴 위치를 가져오기 위해 Raycast를 사용했다.
+
ray를 캐릭터에게 쏘면 캐릭터가 자기를 바라보려고 무리하다 넘어지고 마는데,
이를 해결해보자.
'Unity3D > 수업 내용' 카테고리의 다른 글
22.01.26 애니메이터 임팩트 타임에 따라 적에게 피해 입히기 (0) | 2022.01.26 |
---|---|
22.01.26 유니티와 JSON 연동해 데이터 불러오고 저장하기 (0) | 2022.01.26 |
22.01.25 Simple RPG - 애니메이터, 파티클, JSON (0) | 2022.01.25 |
22.01.24 Sling Chestnut (0) | 2022.01.24 |
22.01.17 수업 내용 (0) | 2022.01.17 |