2013-05-24 1 views
0

유니티 스크립트를 사용하여 유니티에서 platformer를 만들고 있습니다.유니티 점핑 충돌 - 적의 공격 방법

저는 캐릭터 컨트롤러와 다양한 자식 개체가있는 Player 부모 개체가 있습니다. 나는 상자의 충돌 자와 비슷한 적이있다. 나는 플레이어가 적으로 들어갈 때 일어나는 충돌과 플레이어가 위에서 뛰어 오르고 충돌 할 때 일어나는 충돌을 구별하기 위해 고심하고있다.

나는 자식 개체에 태깅을 시도했지만 충돌자를 가지고 있지 않습니다. 콜리 더를 자식 오브젝트에 추가하면 캐릭터 움직임이 엉망이됩니다. 또한 플레이어의 위치를 ​​테스트하기 위해 시도했다 :

if(col.transform.position.y >= transform.position.y){ killThyself(); } 

을하지만이 일을하거나하지 않습니다 - 나는 적군의 높이를 추가해야합니까? 그렇다면 어떻게해야합니까?

좋은 제안이 있습니다.

+1

나는이 질문에 몇 가지 코드를 추가 할 것을 제안합니다.이 작품을 얻는 방법은 당신이 얼마나 큰 적을 가지고 있는지에 달려 있습니다.). – Teemu

+0

OnCollisionEnter를 사용하고 있다고 가정하면 각 ContactPoint 내에서 'normal' 변수를 사용하여 위쪽으로 향하고 있는지 확인할 수 있습니다 (따라서 충돌 상자의 맨 위를 치고 있음) –

답변

0

음, 부울 변수를 사용합니다. 점프 버튼을 누르면 사실이되고, 점프가 완료되면 (플레이어가 바닥에 닿았을 때) 거짓이됩니다. 부울을 public 변수로 선언하십시오. 그런 다음 OnCollision 메서드에서 변수 값을 확인하십시오.

http://docs.unity3d.com/Documentation/ScriptReference/index.Accessing_Other_Game_Objects.html

글쎄, 난 적 제어 스크립트에서이 작업을하고있는 "otherScript"(플레이어 스크립트)을 할당 할 귀하의 경우 :

나는 당신이 그 작업을 수행하는 방법을 이해하기 위해이 글을 읽을 것을 권장합니다
var player : GameObject; 
var playerScript: PlayerScript; 
//I'm assuming "PlayerScript" is the name of the control script of your player, 
//where you defined the "jump" variable. 

    function Start() 
    { 

    player = GameObject.FindGameObjectWithTag("Player"); 
    //You also can use GameObject.Find("PlayerName") 
    playerScript = player.GetComponent(PlayerScript); 
    //Get the script from the player 

    } 

    function OnCollisionEnter(col : Collision) 
    { 

    if (playerScript.jump == true) 
    { 
     killThyself(); 
    } 

    } 

레벨로드에서 한 번만 찾으려면 시작 기능에서 플레이어를 찾고 있습니다. 이제 플레이어 스크립트를 변수에 할당합니다. 따라서 플레이어가 적을 때렸을 때이 적은 플레이어가 스크립트를 사용하여 점프하는지 확인합니다. 이 변수를 공용 변수로 선언해야합니다. 그렇지 않으면 작동하지 않습니다. 이 방법을 사용하여 문제가있을 경우 는 이제 headCollider를 호출 할 수

0

나는 원수의 상부에 두 번째 입자 가속기를 사용합니다) = 의견을주십시오. isTrigger = true을 설정하고 특수 물리학 자료를 사용할 수도 있습니다. 이 headCollider이 처음으로 트리거되면 플레이어 캐릭터가 적에게 뛰어 오르고 있거나 위쪽에서 떨어지는 것을 알 수 있습니다.

OnTriggerEnter (Collider other)에서 일부 상태 변수를 준비 할 수 있습니다 (상태 재설정을위한 타이머 일 수도 있음). 또한 제안 된 V_Programmer의 답변과 같은 현재 점프 상태는 평가에 유용해야합니다.

유니티는 동일한 종류의 콜리 더를 2 개 부착 할 수 없기 때문에 상자와 구를 사용하거나 빈 아이를 만들어서 사용해야합니다.