2013-11-25 2 views
1

화합에 문제가 있습니다. 적과 플레이어가 충돌하면 플레이어가 건강 상태를 잃어 버리게하려고합니다. 내 코드는 다음과 같습니다.적과 충돌하여 데미지를 입힌다

코드를 살펴보기 전에 적을 강체로 사용하여 개체의 총알이 효과를 낼 수 있다고 말하고 싶습니다. 코드가 충돌을 감지 할 수 있도록 견고한 몸체가 될 수있는 플레이어 몸체의 한 부분으로 여분의 캡슐을 만들었습니다. 그게 효과가 있다고 생각하니? 강체가 다른 강체 충돌을 감지하는 것이 더 쉬운 지 또는 신경 쓰지 않는지 확실하지 않습니다.

//basic stuff// 

public class playerhealth : MonoBehaviour { 

    private int curHealth; 
    private int playerLives; 
    public GUIText winText; 
    public GUIText healthText; 
    public GUIText livesText; 

    void Start(){ 
    curHealth = 3; 
    playerLives = 3; 
    SetHealthText(); 
    SetLivesText(); 
      winText.text = ""; 
    } 


    void FixedUpdate()//where physics codes go 
    { 
      } 



//HERE'S WHERE THE COLLISIONS STUFF IS 

    void OnCollisionEnter(Collider rigidbody){ 
      if(rigidbody.gameObject.tag == "Enemy"){ 
        curHealth = curHealth - 1; 
        SetHealthText(); 
      } 

        if(rigidbody.gameObject.tag == "reloader"){ 
        playerLives = playerLives - 1; 
        SetLivesText(); 
      } 
    } 




//setting GUI TEXT and reloading level 

    void SetHealthText(){ 
      healthText.text = "Health Points: " + curHealth.ToString(); 
      if(curHealth <=0) { 
      Application.LoadLevel ("shootingworld"); 
        playerLives = playerLives - 1; 
      } 

      if(curHealth >= 10){ 
        playerLives+= 1; 
      } 

      } 

    void SetLivesText(){ 
      livesText.text = "Lives: " + playerLives.ToString(); 
      if (playerLives <= 0){ 
        winText.text = "GAME OVER"; 
      } 

    } 
} 
+0

당신이 가지고있는 문제를 설명하십시오 수 있습니다. 그리고 시나리오 –

답변

1

여기서는 여러 가지 가정을하고 있습니다. 그 중 일부는 잘못되었습니다. 나는 그들을 지적하려고 노력할 것이다.

게임 개체에 RigidBody를 추가하는 것이 올바른 생각이지만 개체 충돌의 모양과 크기를 결정하는 것은 Collider 구성 요소입니다. BoxCollider, SphereCollider 또는 CapsuleCollider를 둘 다에 추가하는 것을 고려하십시오.

실제로 충돌하는 데 문제가 있다고 가정합니다. 해결책 일 수 있습니다. 또한

,
void OnCollisionEnter(Collider rigidbody){ 

  1. 당신이 '강체'라는 이름의 한 매개 변수

    는 강체 요소로 보장 할 수 없습니다. documentation

    에 따른 충돌 클래스 접점에 대한 정보, 충돌 속도 등을 포함

  2. OnCollisionEnter 대한 적절한 구문 충돌 파라미터 아닌 충돌 장치를 갖는다.
Collider에서 rigidbody에 액세스하려면 Collider에서 찾은 객체에 getcomponent를 사용하고 RigidBody 구성 요소가 있는지 확인해야합니다. 나는 이것이 당신이 무엇인지 확신 할 수 없지만 오도 된 매개 변수 이름을 확인해야합니다.

어쨌든 Collider의 게임 객체를 태그와 비교하는 것에 대한 올바른 아이디어를 얻었습니다. 편집기 나 코드를 통해 객체에 태그를 적용하면됩니다.

0

이를 사용 :

void OnCollisionEnter(Collider collision) { 

}

충돌 장치가 Ontrigger에 사용됩니다 ...

을이 시도 :

void OnCollisionEnter(Collision collision) { 

}

희망이 도움 !:)

관련 문제