2016-08-29 4 views
0

이 코드에서 다른 위치에있는 다른 그룹의 플레이어를 다시 생성하려고합니다. 코드가 플레이어를 원하는 위치로 성공적으로 텔레포트하지만, 나중에 플레이어는 기본 re-spawn 위치로 순간 이동됩니다.이벤트 발생시 코드 줄 실행 지연

지금은 정상적으로 작동합니다.

player.Teleport()의 실행을 지연시키는 방법이 있습니까? 그럼 게임이 플레이어를 기본 위치로 텔레포트 한 후에 텔레포트 할 수 있습니까?

시도 중 Thread.Sleep은 텔레 포지션 프로세스를 지연시킵니다.

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{ 
    player.Teleport(HQLocation1); 
} 
+0

당신은 시도해야 HTTP ://gamedev.stackexchange.com/ 그들이 더 나은 대답을 할 수도 있습니다 – Mfusiki

+1

제안 해 주셔서 감사합니다. Mfusiki, 처음으로 여기에 있습니다! 지금 당장 그렇게 할 것입니다. –

+0

'OnPlayerRespawn'을 호출하는 것은 무엇입니까? – Enigmativity

답변

1

이이 매개 변수없이 할 수 있으면 당신은 이런 식으로 뭔가를 할 수 :

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{  
    Invoke("TeleportPlayer", 5); 
} 

private void TeleportPlayer() 
{ 
    player.Teleport(HQLocation1); 
} 

당신이 매개 변수를해야 할 경우는 코 루틴을 사용할 수 있습니다

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{  
    StartCoroutine(TeleportPlayer(some parameters)); 
} 

private IEnumerator TeleportPlayer(some parameters) 
{ 
    // wait before doing other stuff 
    yield return new WaitForSeconds(5); 

    player.Teleport(HQLocation1); 
} 
+0

아, 매개 변수도 필수입니다! 답장을 보내 주셔서 감사하며 coroutine 방법을 시도했지만 오류가 발생했습니다. 'TeleportPlayer (UnturnedPlayer)는 abstract, extern 또는 partial으로 표시되어 있지 않으므로 본문을 선언해야합니다. 반환 값 new는'잘못된 토큰입니다. "클래스, 구조체 또는 인터페이스 멤버 선언에서"잘못된 토큰 "을 반환합니다. –

+0

신경 쓰지 마세요, 이제 작동합니다! 도와 줘서 고마워, 내게 많은 의미! <3 –

+0

기꺼이 도와 드리겠습니다 :) –

0

게임이 기본 위치에 플레이어를 텔레포트 후 플레이어가 텔레포트 수 있도록 "player.Teleport"의 실행을 지연시키는 어떤 방법이 있습니까?

예, Invoke 기능을 사용하십시오. 첫 번째 매개 변수는 호출 할 함수이고 두 번째 매개 변수는 함수를 호출하기 전에 기다려야하는 시간입니다. 이것은 Coroutine으로도 수행 할 수 있지만 Invoke은이 간단한 작업에 더 적합합니다.

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{ 
    Invoke("Teleport", 2); 
} 

void Teleport(){ 
    player.Teleport(HQLocation1); 
} 
관련 문제