2017-11-17 3 views
0

입니다. 따라서이 가이드를 따라 왔습니다. https://www.youtube.com/watch?v=RQyfHmf7v9s 우주 사수 게임을 만드십시오.gameObject 레이어 저장은 항상 기본 (Unity + VS)

"Enemy"레이어 아래에있는 두 개체가 충돌하지 않는다는 개념입니다. 그러나 "Player"레이어 아래의 개체가 "Enemy"와 충돌하면 아무것도 충돌하지 않는 "상처 입지 않는"레이어의 일부가됩니다.

하지만 코드에서 한 줄 (이 하나가 :

  gameObject.layer = correctLayer; 

는 "기본"레이어로 내 개체마다집니다 것으로 보인다. 이 코드입니다 :

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
[AddComponentMenu("WaterEffects/ForCamera")] 
public class HitHandler : MonoBehaviou { 

public int health = 1; //Object health 

float invulnTimer = 0.25f; //Time in which the gameObject is invulnerable 
int correctLayer; // save the original layer of the object 

void start() 
{ 
    correctLayer = gameObject.layer;  
    gameObject.SetActive(true); 
} 

void OnTriggerEnter2D() 
{ 
    Debug.Log("Trigger!"); 
    health--; 
    invulnTimer = 2f; 
    gameObject.layer = 10; //put object in invulnerable layer 
} 
// Update is called once per frame 
void Update() 
{ 
    invulnTimer -= Time.deltaTime; 
    if (invulnTimer <= 0) 
    { 
     gameObject.layer = correctLayer; //returns object to original layer (doesnt work) 
    } 
    if (health <= 0) 
    { 
     Die(); 
    } 
} 
void Die() 
{ 
    Destroy(gameObject); // Destroys object 
} 
} 

나는 통일에 내가 그들의 반사 레이어로 객체를 정의에도 불구하고 시작 함수가 오른쪽 레이어를 저장하지 않는 이유를 모르겠어요.

참고 : Kinematic 개체를 만들고 IsTrigger를 확인했습니다. 첫 번째 언급 된 코드 줄이 사용 중이 아니면 작동하지 않습니다.

답변

1

이어야합니다. 이어야합니다. void Start() start()가 아님.
대문자를 알고 있어야합니다.

+0

정말 고마워, 너무 바보 같아. Cant는 내가 몇 시간 동안 그랬다고 믿는다. 대문자로 ... –

+0

적 디버그는 당신의 친구 다. 문제가있는 경우 먼저 코드 도달 위치를 확인하십시오. – joreldraw

+0

@joreldraw VS + Unity 이후 디버깅이 작동하지 않는 것 같습니다 (게임은 Unity에 있고 VS는 단지 그것을 작성하기위한 것임), 또는 뭔가 빠져있을 수도 있습니다. –