2013-04-10 5 views
2

저는 첫 번째 인물 게임에서 Unity에서 일하고 있으며, 추가하고 싶은 기능 : 사다리 오르기 등을 발견했습니다. 그러나, 나는 이것을 지금까지 (자바 스크립트를 사용하고 있습니다.) 코딩에 실패했습니다.Unity : 등반 사다리

function OnCollisionEnter(collider:Collision){ 
    if(collider.gameObject.name=="ladder"){ 
     Debug.Log("hit ladder"); 
    } 
} 

기술적으로,이 ... 사다리와 충돌의 "사다리를 명중"디버그 메시지를 표시해야하지만, 아무튼 : 다음은 내가 사다리와 충돌을 테스트해야 스크립트가 작동하지 않습니다이다 '티.

왜 이것이 작동하지 않는지 또는 어떻게 해결할 수 있는지 아는 사람이 있습니까? 감사.

+1

그냥 던지기 만하면되지만 C#은 Unity보다 훨씬 좋습니다. – AlienWebguy

+0

예, 들었습니다. C#에서이 일을 어떻게 할 수 있는지 아십니까? 실제로, 나는 코드가 아닌 것처럼 느낍니다. 뭔가 잘못 설정된 것 같습니다. 하지만 확실하지 않아요 –

+1

기술적으로, JavaScript가 아닌 UnityScript입니다. – Joetjah

답변

0

이 스크립트는 사다리와의 충돌을 찾고 있으므로 문자 안에 스크립트가 있다고 가정합니다. 스크립트가 사다리 안에 있다면, 음 ... 거기에 문제가 있습니다 : P

어떤 경우라도 이것이 캐릭터 내에 있고 아마도 CharacterController를 사용하여 그를 움직이면 OnCollisionEnter은 트리거하지 않습니다 . OnControllerColliderHit(collider:Collision) { ... }을 사용하고 그 안에 충돌 감지를 넣어야합니다.

0

내가 말할 수있는 것은 두 가지입니다.

  1. 사용 스티븐 밀스 제안 것처럼 CharacterController.OnControllerColliderHit하지만, 매개 변수가 함수에 전달되는 것을 알 수 걸릴 실제로 ControllerColliderHit입니다.
  2. 충돌 자의 이름을 확인하는 대신 GameObjectTag을 비교하십시오. 이 기능을 사용하고자하는 각각의 GameObject에 대해 동일한 태그 ("래더")를 할당하면됩니다.

여기뿐만 아니라 당신을 위해 C# 예제입니다 :

void OnControllerColliderHit(ControllerColliderHit hit) { 
    if (hit.collider.CompareTag("Ladder")) { 
     //Climbing 
    } 
} 

나는 자세한 내용은 위의 링크에서 찾고 추천 할 것입니다. 이는 플레이어가 사다리와 충돌하는 위치와 같은 추가 검사를 수행하기를 원하기 때문입니다. 이것은 사닥다리에서 사다리를 오르고 싶지 않을 수도 있기 때문입니다. 물론 사닥다리로프 또는 이와 비슷한 경우가 아니면 예외입니다. 플레이어가 사다리를 오르 내리고 내려가는 것을 끝내 었다는 것을 알려줄 수있는 방법이 필요합니다. 발이 꼭대기에있을 때 사다리를 오르고 싶지 않을 것입니다.). 희망이 도움이!

1

아마도 파티에 약간 늦었 겠지만 여기에 있습니다.

컨트롤러가 앞으로 움직일 때 상향 이동을 적용하는 트리거 기반 래더를 만들 수 있습니다.

게시물에 표시되는 이전 데모 비디오에서 간단한 사다리를 구현하는 방법을 설명하는 블로그 항목을 게시했습니다 (코드 없음).

http://www.lazr.pw/2014/02/unity-trigger-based-ladders.html

희망이 사람을 도움이됩니다.

0
  1. 사용 OnTriggerEnter (충돌 장치)의 대신 (트리거로 사다리를 설정하는 것을 잊지 마세요!)
  2. 사용 강체 대신 문자 컨트롤러 (비 역학적 하나).문서에는 "충돌 장치 중 하나에 연결된기구가없는 강체가 연결된 경우에만 충돌 이벤트가 전송됩니다."라고되어 있습니다.