2014-09-11 1 views
1

나는 화합으로 새롭고 나는 내 플레이어가 다른 물건과 충돌하면 내 선수의 삶이 불가능 해지고 충돌자가 한 곳에서 다른 곳으로 여행하며 너무 많은 충돌 자와 콜 리더는 약간 넓어서 플레이어가 콜라이더와 만났을 때 아주 짧은 시간에 세 선수의 생명이 하나씩 비활성화됩니다.내 플레이어의 생명이 한 번에 사라지는 이유는 무엇입니까?

내 플레이어가 동일한 개체를 몇 번이고 반복해서 터치 할 때를 이해합니다. 그래서 선수들은 모든 생명을 동시에 줄일 수 있지만 어떻게 해결 해야할지 모르겠습니다.

코드 충돌은 다음과 같습니다.

void OnTriggerEnter(Collider C){ 
    if(C.gameObject.name == "DownCollider" || C.gameObject.name == "Cylinder"){ 
     if(Life1.activeInHierarchy){ 
      Life1.SetActive(false); 
     } 
     else if(Life2.activeInHierarchy){ 
      Life2.SetActive(false); 
     } 
     else if(Life3.activeInHierarchy){ 
      Life3.SetActive(false); 

     } 
    } 
+0

. 그게 하나의 충돌에서 여러 생명의 공제를 방지 할 수 있습니다 – KennethLJJ

+0

어떻게 그 모든 예제 코드는 나를 도울 것입니다 ... [Dharmesh] (http://www.variyasoftsolutions.com/unity3d.html) –

+0

if (Life1 .activeInHierarchy && deductLife) { Life1.SetActive (false); deductLife = false; } 잠시 후에 deductLife를 true로 설정하십시오. – KennethLJJ

답변

1

난 그냥 이것을 시도하고 나를 위해 작동 .. 도움 KennethLJJ에 대한

void Update() { 

     Vector3 pos = transform.position; 
     pos.y -= 0.03f; 
     transform.localRotation = Quaternion.Euler(60,270,90); 
     transform.position = pos; 
     if(Input.GetMouseButton(0)){ 
      transform.localRotation = Quaternion.Euler(72,90,-90); 
      pos.y += 0.1f; 
      transform.position = pos; 
     } 
     LifeT -= Time.deltaTime; 

     if(LifeT <= 0){ 
      LifeTime = true; 
      LifeT = 5f; 
     } 
    } 
    void OnTriggerEnter(Collider C){ 
     if(C.gameObject.name == "DownCollider" || C.gameObject.name == "Cylinder"){ 
      print(LifeTime); 
      if(Life1.activeInHierarchy && LifeTime){ 
       Life1.SetActive(false); 
       LifeTime = false; 
      } 
      else if(Life2.activeInHierarchy && LifeTime){ 
       Life2.SetActive(false); 
       LifeTime = false; 
      } 
      else if(Life3.activeInHierarchy && LifeTime){ 
       Life3.SetActive(false); 
       LifeTime = false; 
      } 
     } 

감사합니다.

감사합니다,

다르 메쉬

u는 삶을 차감 한 후 무적 시간을 가지고 시도 할 수 있습니다