입니다. 따라서이 가이드를 따라 왔습니다. 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를 확인했습니다. 첫 번째 언급 된 코드 줄이 사용 중이 아니면 작동하지 않습니다.
정말 고마워, 너무 바보 같아. Cant는 내가 몇 시간 동안 그랬다고 믿는다. 대문자로 ... –
적 디버그는 당신의 친구 다. 문제가있는 경우 먼저 코드 도달 위치를 확인하십시오. – joreldraw
@joreldraw VS + Unity 이후 디버깅이 작동하지 않는 것 같습니다 (게임은 Unity에 있고 VS는 단지 그것을 작성하기위한 것임), 또는 뭔가 빠져있을 수도 있습니다. –