일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 팀 프로젝트
- 길건너 친구들
- 유니티 UI
- 모작
- Photon Fusion
- Oculus
- 연습
- 유니티
- input system
- meta
- 오브젝트 풀링
- VR
- 유니티 Json 데이터 연동
- 멀티플레이
- 오큘러스
- 가상현실
- 드래곤 플라이트
- 드래곤 플라이트 모작
- HAPTIC
- 유니티 GUI
- ChatGPT
- 포트폴리오
- OVR
- CGV
- 팀프로젝트
- meta xr
- 개발일지
- 개발
- XR
- 앱 배포
Archives
- Today
- Total
EasyCastleUNITY
가장 가까운 무기 장착 본문
레이어마스크와 OverlapSphereNonAlloc 함수 활용
해당 함수는 주변에 물체의 갯수가 일정할 때만 사용하는 것이 좋다.
여기서는 6개로 일정하기에 사용하였다.
무기들은 모두 콜라이더를 가지고 있고, 레이어의 이름은 Gun이다.
주변에 콜라이더를 모두 검색하여, 가장 가까운 무기를 장착한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OverlapPlayer : MonoBehaviour
{
[SerializeField]
private float radius = 1.0f;
[SerializeField]
private Transform weaponChild;
private Collider[] colls = new Collider[6];
private float weaponDistance = 0.0f;
private float minDistance = 100f; //min 크게 하기
private GameObject equipWeapon;
// Start is called before the first frame update
private void Start()
{
int layMask = 1 << LayerMask.NameToLayer("Gun");
int cnt = Physics.OverlapSphereNonAlloc(this.transform.position, radius, colls, layMask);
Debug.LogFormat("count:{0}", cnt);
foreach(Collider col in colls)
{
float distance = Vector3.Distance(this.transform.position,
col.gameObject.transform.position);
if( this.minDistance> distance) // minDistance가 갱신될 때가 검색된 무기 중에서 현재 가장 가까운 무기
{
this.minDistance = distance;
this.equipWeapon = col.gameObject;
}
Debug.Log(col.gameObject.name);
}
Debug.LogFormat("<color=lime>minDistance:{0}</color>", this.minDistance);
Debug.LogFormat("<color=lime>equipWeapon:{0}</color>", this.equipWeapon);
this.equipWeapon.transform.position = Vector3.zero; //주변에 있는 거 줍는거여서, 위치를 초기화해준다.
this.equipWeapon.transform.SetParent(weaponChild,false); //장착 무기를, weaponChild의 자식으로 설정한다.
}
private void OnDrawGizmos()
{
Gizmos.DrawWireSphere(transform.position, radius);
}
}
결과
'유니티 심화' 카테고리의 다른 글
SpaceShooter 몬스터 피격 및, 몬스터의 공격 (0) | 2023.08.24 |
---|---|
Zombero를 레퍼런스한 프로젝트 (0) | 2023.08.22 |
총알반사 (0) | 2023.08.21 |
충돌감지를 통한, 플레이어 회전 변경 (0) | 2023.08.21 |
[과제]궁수의 전설 이동 및 공격 만들기(2023.08.23 00:01분 최종완성) (0) | 2023.08.19 |