2016-12-29 2 views
2

자, 여기 내 코드가 있습니다. 이것은 정말 간단해야하지만 어떤 이유로 든 나와 함께하기를 원하지 않습니다. Raycast는 마우스에서 광선을 보내고, 태그가있는 객체에 도달하면 변수에 숫자를 할당합니다. 객체를 히트하지 않으면 변수를 -99로 설정합니다. 어떤 이유로 광산에 걸려 :Else 문은 단일체로 작동하지 않습니까?

A. 내가 개체를 때리지 마세요, 그것은 -99 처음으로 출력하지만, 그 이후로는 4

BI는 개체를 공격하고 것이다 할당하기에 달려 잘 작동합니다. 개체를 클릭 한 후 이전에 클릭 한 개체의 변수에 중단됩니다.

em.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class GameFunctions : MonoBehaviour { 

int Hitnum = -99; 
void Start() { 
    } 

    void Update() { 

     if (Input.GetMouseButtonDown (0)) { 
      objectCheck(); 
     } 

    } 
    //end of UPDATE function 



public void objectCheck() { 
     RaycastHit hit; 
     Ray ray = camera.ScreenPointToRay (Input.mousePosition); 
     if (Physics.Raycast (ray, out hit, 10000.0f)) { 
      if (hit.collider.tag == "Box") { 
       Hitnum = 1; 
      } else if (hit.collider.tag == "Sphere") { 
       Hitnum = 2; 
      } else if (hit.collider.tag == "Pyramid") { 
       Hitnum = 3; 
      } else if (hit.collider.tag == "Trapezoid") { 
       Hitnum = 4; 
      } else { 
       Hitnum = -99; 
      } 
     } 
     Debug.Log (Hitnum); 
    } 
    //end of check 

} 

미리 감사드립니다. 그것이 간단해야하기 때문에 이것은 내 견과를 몰고있다.

편집 : 이번에는 전체 코드 게시, 모두 해당됩니다. 태그가있는 다른 객체가 없다는 것을 언급해야합니다. null 공간입니다. 이것은 아이들을위한 아주 기본적인 모양 식별자였습니다.

편집 : 편집 : 개체를 치지 않으면 -99를 출력 할 것으로 예상됩니다. 나중에 아마 번호로 뭔가를 할 것이지만 지금은이 문제를 해결할 필요가 있습니다.

+0

전체 코드를 게시 할 수 있습니까? –

+0

질문을 편집하여 일어날 것으로 예상되는 것을 진술하고 현재 일어나는 일을 진술해야합니다. 당신은 그렇게하지 않았고 이것은 실제로 대답하기 어려울 것입니다. 현재의 질문으로, 아무도 당신이 기대하는 것을 말할 수 없습니다. 또한 실행중인 기능이 무엇인지 알려주십시오. – Programmer

+0

1. 첫 번째 if (Physics ...)에 대해 더 이상 배치 할 수 없습니까? 그리고 Hitnum에 특정 값을 지정하여 그 값이 고정되어 있는지 확인합니다. 2. 변수가 겹쳐 쓰여지는지 알기 위해서 또는 단순히 이전 값으로 유지하면 변수를 겹쳐 쓰는 대신 변수를 늘릴 수 있습니다. 멈추는 위치를 알 수 있습니다. 3. 다른 변수가 너무 읽기 쉽지 않은 경우 변수를 변경하는 방법 스위치 케이스 성명서에? – Kev1n91

답변

1

다시 시작하면 모든 것이 정상적으로 작동합니다. 감사. 내 설정을 통해 무엇이 변경되었는지 확인했습니다. 배경 태그가있는 배경을 이전에 삭제했습니다. 단결은 레이캐스팅에 맞지 않는다면 마지막으로 쳤던 물체를 얻을 것이라고 결정한 것 같습니다.

+1

Raycast가 아무 것도 치지 않으면 (Physics.Raycast (ray, out hit, 10000.0f)) false를 반환하고 Hitnum이 이전 값을 유지하는 경우 첫 번째 if 문을 입력하지 않아도됩니다. 그래서 else 문이 필요합니다. 첫 번째 문 뒤에 –

+1

switch (myString) {case "Sphere": ... case "Pyramid": .. case null : ...}, elseif 구조 이상 코드 친화적 인 –