2014-02-23 8 views
0

Snake 게임의 리메이크가 있습니다. 뱀의 머리는 방아쇠이고, 사과는 단지 충돌자를 사용합니다. 이제 OnTriggerEnter()는 매번 작동하지 않습니다. 뱀의 트리거는 사과 몸에 여러 번 입력해야만 얻을 수 있습니다.Unity 3D 프로젝트에서 트리거가 계속 작동하지 않음

의 식사에 사용되는 코드입니다 :

void Head.OnTriggerEnter(Collider col) 
{ 
    if(col.CompareTag("Food")) 
    { 
     gameController.FoodEated(); 
    } 
} 

public void GameController FoodEated() 
{ 
    Destroy(currentFood); 
    InitializeMeal(); 
    head.GrowUp(); 
} 

void GameController.InitializeMeal() 
{ 
    currentFood = (GameObject)Instantiate(foodPrefab, FindFreeSpace(), Quaternion.identity); 
} 

그리고 마법의 일종이는 : 사과하기 전에 몇 번 첫 번째 사과는 일반적으로 먹을 수 있지만 뱀이 두 번째 사과를 통해 걸을 수있는 것 활성화 시키십시오.

모든 트리거 기능을 시도했지만 그 중 아무 것도 작동하지 않았습니다. http://www.youtube.com/watch?v=z_UQi7SGOLw - 버그의 비디오. 뱀은 3-4 프레임 업데이트를 위해 사과를 통과합니다. 나는 사과를 실현하는 또 다른 아이디어를 가지고 있지만, 방아쇠가 더 적절하다고 생각합니다.

+0

유일한 마술은 여기에있는 뱀입니다. 비디오를 녹음하고 문제의 링크를 게시 할 수 있습니까? 또는 OnTriggerStay를 사용해보십시오 ... 뱀이 등록을 위해 너무 빨리 움직일 수 있습니다 – Savlon

답변

0

뱀이 너무 빠르게 움직이고 사과 충돌기가 너무 작아서 Unity의 엔진이 때때로 충돌을 놓칠 수 있다고 생각하는 것보다 큽니다.

뱀의 경우 리지드 바디 구성 요소가 "충돌 감지"를 "이산 적"에서 "계속"또는 "계속 동적"으로 변경하여 충돌 감지 품질을 높일 수 있습니다.

+0

그래, 뱀이 음식을 만지면서 적어도 세 번 업데이트하는 프레임을 체크 아웃했습니다. 충돌 감지 유형이 도움이되지 않았습니다. ((하지만 감사합니다.이 매개 변수가 유용 할 수있는 문제에 대해서는 전혀 몰랐습니다.)) – amazingbasil

0

위의 비디오에서 알 수 있듯이 현재 뱀은 현재 transform.position에서 타이프 요소를 만들어서 커지고 있습니다. TailElement는 마지막 두 꼬리 요소 사이의 거리가 1보다 크거나 같을 때 이동을 시작합니다.

머리의 충돌 자의 반지름을 10 % 줄이고 이제 뱀이 움직이는 동안 꼬리 요소가 충돌하지 않습니다. 이제 제대로 작동합니다.

관련 문제