2016-10-05 10 views
0

Unity3D를 사용하고 있으며 증강 현실을 프로그래밍하고 있습니다. 내가 화면을 만지고 터치 된 위치에 하나의 물체가 있다면, 나는 뭔가를 할 것입니다. ? 할당되지 않은 지역 variable'dokunma '이해가 안 의 사용 : 사실 나는Unity3D로 어떤 게임 객체를 만진 지 알 수 있습니까?

내 코드는 여기

using UnityEngine; 
using System.Collections; 

public class Atak : MonoBehaviour { 
    private Animator anim; 
    private GameObject kamera; 

    // Use this for initialization 
    void Start() { 
     anim = GetComponent<Animator>(); 
     kamera = GameObject.FindGameObjectWithTag ("Kamera"); 
    } 

    // Update is called once per frame 
    void Update() { 
     RaycastHit dokunma; 
     if (Physics.Raycast(kamera.transform.position,Input.mousePosition,10)&& 
      dokunma.collider.gameObject.tag=="Oyuncu" && Input.GetMouseButtonDown(0) 
     ){ 

      anim.SetBool ("Bekle", false); 
      anim.SetBool ("Saldir", true); 
     } else{ 
      anim.SetBool ("Bekle", true); 
      anim.SetBool ("Saldir", false); 
     } 
    } 
} 

편집기입니다 나에게 오류를 제공하는 게임 오브젝트 감동 알 수있는 방법 "합니다.

답변

0

당신은 dokunma (RaycastHit) 변수에 아무것도 지정하지 않았다.이 초기화되고 레이 캐스트의 결과가 저장 될 수 있도록 당신이 out 키워드로 Physics.Raycast 함수에 dokunma 변수에 전달해야합니다 그 안에.

레이크 캐스트를 수행하기 전에 터치 프레스를 먼저 확인하는 것이 더 좋습니다. 항상 CompareTag 함수를 사용하여 태그를 비교하십시오. 아래 사항 중 하나를 수행해야합니다.

void Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     Ray rayCast = Camera.main.ScreenPointToRay(Input.mousePosition); 
     RaycastHit dokunma; 
     if (Physics.Raycast(rayCast, out dokunma, 10)) 
     { 
      if (dokunma.collider.CompareTag("Oyuncu")) 
      { 

       anim.SetBool("Bekle", false); 
       anim.SetBool("Saldir", true); 
      } 
      else 
      { 
       anim.SetBool("Bekle", true); 
       anim.SetBool("Saldir", false); 
      } 
     } 
    } 
} 
+0

게시 한 코드에 아무런 문제가 없으며 현재 코드를 볼 수 없습니다. 코드에 대한 나의 대답에 새로운'Update' 함수를 복사하십시오. 그러면 문제가 해결됩니다. – Programmer

+0

답변 해 주셔서 감사합니다.하지만 기본 카메라는 사용하지 않습니다. vuforia 카메라를 사용하고 Camera.main.ScreenPointToRay를 사용할 수 없습니다. 그리고 제 시작 기능을 확인해주세요. 카메라 이름을 설정하십시오. –

+0

이 경우,'Camera.main.ScreenPointToRay (Input.mousePosition)'를'kamera.GetComponent () .ScreenPointToRay (Input.mousePosition);로 대체하십시오. – Programmer