naverz / zepeto-script-sample

38 stars 7 forks source link

raycast 관련 질문 #30

Closed nelly0420 closed 3 years ago

nelly0420 commented 3 years ago

var hit = this.gameObject.GetComponent(); var ray = this.gameObject.GetComponent(); ray = Camera.main.ScreenPointToRay(Input.mousePosition);

     if(Physics.Raycast(ray,out hit))
     {
        if(hit.collider.tag == "ball"){
            ball.SetActive(true);

Raycast를 사용해 물건을 클릭하게 만들려고 하는데 Physics.Raycast(ray,out hit)에서 out hit에 오류라고 뜹니다. 혹시 제페토에서는 유니티와는 다른 식으로 Raycast를 사용해야하나요?

hyeonjin-jo commented 3 years ago

안녕하세요 Raycast관련 간단한 샘플 코드 공유드립니다

Update()
{
    this.MouseControl();
}

MouseControl()
{
    if(Input.GetMouseButtonDown(0))
    {
        let ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        /**RaycatHit 참조변수를 파라메터로 넘기기 위해, $ref 연산자로 wrapping 하는 부분에 유의해주세요.
        (매개변수 한정자 out이 필요한 상황이기때문에) 객체 생성 없이 참조만 선언해줍니다. **/        
        let ref = $ref<RaycastHit>();   

        if(Physics.Raycast(ray, ref, 1000))
        {
            //RaycatHit 데이터를 확인하기 위해, $unref 연산자로 다시 unwrapping 하는 부분에 유의해주세요.
            let hitInfo = $unref(ref); 

            console.log(`Detect Hit!`);    
            console.log(`hitInfo.collider.name : ${hitInfo.collider.name}`);

        } else {
            console.log(`Failed to Detect Collision`);
        }
    }
}