728x90
반응형
VR에선 컨트롤러 위치가 실제 컨트롤러의 움직임에 따라 출력됩니다.
따라서 모델을 컨트롤러 앵커 하위에 두게 되면 무슨 짓을해도 투과를 하더군요
그래서 꼼수를 부려봤습니다.
응용하셔서 재밌는 게임을 만들어주세요 여러분!
씬 구성은 이렇습니다.
물체 추돌 판정 스크립트(컨트롤러 앵커 하위의 CustomHandRight에 붙였습니다)
using UnityEngine;
using Node = UnityEngine.XR.XRNode;
public class HandPositionController : MonoBehaviour
{
[HideInInspector]
public Rigidbody handRig;
public Node hand = Node.RightHand;
public bool isStop;
bool staySomething;
int inCount;
private void Start()
{
handRig = GetComponent();
if (hand == Node.RightHand) HandStatus.instance.rightHand = this;
else HandStatus.instance.leftHand = this;
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("StaticPos"))
{
inCount++;
isStop = true;
}
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag("StaticPos"))
{
inCount--;
if(inCount==0) isStop = false;
}
}
}
public class HandStatus
{
private static HandStatus _instance;
public static HandStatus instance
{
get
{
if (_instance == null) _instance = new HandStatus();
return _instance;
}
set
{
_instance = value;
}
}
public HandPositionController leftHand;
public HandPositionController rightHand;
}
손과 CompareTag를 할 수 있도록
원하는 태그를 만드셔서
부딪힐 오브젝트에 할당해주세요
이제 손 모델입니다
using UnityEngine;
public class TestCube : MonoBehaviour
{
public Transform handTrans;
Transform trans;
Vector3 recentPos;
Quaternion recentRot;
// Start is called before the first frame update
void Start()
{
trans = GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
if (!HandStatus.instance.rightHand.isStop)
{
recentPos = handTrans.position;
}
recentRot = handTrans.rotation;//막혀도 로테이션은 그대로 하고싶엇음 ㅎ
trans.position = (recentPos);
trans.rotation = (recentRot);
}
}
시연 장면입니다
투과 전 모델과 앵커가 같은 위치에 있습니다
투과 후 서로 다른 위치에 있고 빠져나오면 다시 정상 작동합니다.
글 이것 저것 찾다가 없어서
잔머리를 굴려서 만들었으니 허접한점 양해바랍니당 ㅋㅋㅋ
728x90
반응형
'Unity' 카테고리의 다른 글
[Unity] Mouse Look Script (0) | 2020.03.16 |
---|---|
[Unity] Player Movement Script (0) | 2020.03.16 |
[Unity] NavMesh - 자동으로 추격해오는 적 만들기 혹은 마우스로 장애물을 피해 캐릭터 움직이기 (0) | 2020.03.11 |
[Unity] Playfab Notification Setting Error (0) | 2020.02.06 |
[Unity/Python] Python 초보자가 헤맬 수 있는 개 똥같은 상황 pip 오류 (0) | 2020.02.04 |