게임에서 발생하는 논리 및 동작에 몇 가지 문제가 있습니다.통합, 전원 공급 충돌 문제
파워 업을 구현하기를 원하며이 파워 업은 특정 시간 동안 해당 캐릭터를 중지시킵니다. 그렇게하기 위해서 나는 그의 스크립트를 단순히 무력하게 만들 뿐이므로 그는 아무것도하지 않습니다. 이제는 작동하지만 문제는 5 초 후에 스크립트를 다시 사용할 수있는 방법을 찾을 수 없다는 것입니다. 나는 캐릭터를 2 초 동안 멈추고 싶다.
게임에서 발생하는 논리 및 동작에 몇 가지 문제가 있습니다.통합, 전원 공급 충돌 문제
파워 업을 구현하기를 원하며이 파워 업은 특정 시간 동안 해당 캐릭터를 중지시킵니다. 그렇게하기 위해서 나는 그의 스크립트를 단순히 무력하게 만들 뿐이므로 그는 아무것도하지 않습니다. 이제는 작동하지만 문제는 5 초 후에 스크립트를 다시 사용할 수있는 방법을 찾을 수 없다는 것입니다. 나는 캐릭터를 2 초 동안 멈추고 싶다.
귀하의 코드가 잘못되었습니다. Invoke
을 사용해야합니다.
매우 간단합니다.
void ApplyPenalty()
{
yourPauseSystem = true;
Debug.Log("starting penalty..");
Invoke("EndPenalty", 5f);
}
void EndPenalty()
{
yourPauseSystem = false;
Debug.Log(" ...ended penalty");
}
이
Debug.Log
문을 잊지 마세요
뭔가 같은 .... 이상적으로 ApplyPenalty
(및 EndPenalty)이 그 게임의 개체에 대한 한 실제
참고.
실제로 "충돌 오브젝트 코드"에는 여기에없는 게임 개체에 해당 코드를 넣습니다. 알 겠어?
귀하의 경우 그래서, 페널티를 적용하기 위해서는
void OnCollisionEnter(Collision c)
{
if ((c.gameObject.tag == "Character"))
c.GetComponent<YourHerosCode?().ApplyPenalty()
}
당신은 볼 ... 뭔가 같은 것?
물리층 시스템을 사용해야합니다. 말 그대로 유니티에서 충돌을 일으킬 수 있어야합니다. 당신은
은 무엇과 충돌 할 수있는 것을 나타 내기 위해 ...은 "물리학 그리드"를 사용한다. 당신의 의견에서 당신은 그들이 "충돌하지 않을 것이다"라고 말하지만, 당신은 절대적으로 아무것도 충돌 시키거나 충돌시키지 않을 수 있습니다.
실제로 모든 작업에는 Unity에서 고유 한 물리층이 필요합니다.
물론 당신의 영웅, 적 등은 모두 자신의 레이어를 가지고 있습니다.
팁 : 확실히 "적의 발사체"와 "플레이어 투사 체"에는 각각 별도의 레이어가 필요합니다.
NullReference가이 줄에있는 경우 gameObject.GetComponent<PlayerControls>().enabled = true;
은 사용 중지 구성 요소를 참조하려고했기 때문일 수 있습니다.
봅니다 비활성화 구성 요소
var playerController = gameObject.GetComponent<PlayerControls>();
에 시작()에서 VAR을 할당하고/그것을 참조하고 사용하려면이 사용하기 :
playerController.enable = true; //or false
음 ... 좋아,하지만 내가하는 말을 정확히해야한다. 내 친구가 "페널티"코드의 핵심 단어 인 "영웅"을 "켜야한다"는 것이 중요하다. 당신은 그 코드를 당신의 영웅에게 옮길 필요가 있습니다. – Fattie
공정합니다. 앞으로 재미로! – Fattie
절대적으로 레이어를 사용해야합니다. 내 친구! 그것은 필수입니다. 물리 계층. – Fattie