현재 Monogame에 2 차원 공간 사수를 개발 중입니다. 내 게임에서는 스톱워치를 사용하여 플레이어 우주선의 총격전 지연과 다양한 적의 공격과 같은 이벤트 간의 지연을 관리합니다.연산자 '>'를 'System.Diagnostics.Stopwatch'유형의 피연산자에 적용 할 수 없습니다.
예를 들어, 사용자 프레스 스페이스 바를 나는 다음과 같은 방법을 호출 할 때 :
이if (currentKeyboardState.IsKeyDown(Keys.Space))
{
if (Logic.PlayerShotDelay.ElapsedMilliseconds > Projectile.shotdelay)
{
// Fire player shot code
Logic.PlayerShotDelay.Restart();
}
}
위의 코드는 완벽하게 아무런 문제가 작동하지 않습니다를. 그러나 나는 다른 방법으로 동일한 기술을 사용하려고 :
if (currentanimation.frame < 13)
{
if (Logic.FrameDelay.ElapsedMilliseconds > Logic.FrameDelay)
{
currentanimation.Draw(spriteBatch);
currentanimation.frame++;
Logic.FrameDelay.Restart();
}
}
그리고 나는 다음과 같은 오류 얻을 :
오류 1 운영자 '>'이 유형의 피연산자 '긴'와 '시스템에 적용 할 수 없습니다. Diagnostics.Stopwatch '
Projectile.shotdelay와 Logic.FrameDelay는 모두 정적 정수입니다. 멀리 볼 수있는 한, if 문은 기능적으로 동일합니다. 왜 이것이 작동하지 않는지에 관해 나는 완전히 혼란스러워한다. 검색시 null이 아닌 int와 관련된 결과가 있지만 특정 문제에 대한 솔루션을 적용 할 수 없습니다. 어떤 도움이라도 대단히 감사 할 것입니다.
감사합니다. 같은 줄에
다시 확인'FrameDelay'가 무엇인지. 스톱워치의 경과 된 밀리 초 ('긴'유형)를 스톱워치 자체와 비교하고 있습니다. 'Logic.FrameDelay'가 실제로'static int' 일 경우'Logic.FrameDelay.ElapsedMilliseconds'를 호출 할 수 없습니다. –
'Logic.FrameDelay'는 정적 인 int가 될 수 없습니다 - 방금 같은 줄에 Stopwatch 클래스 인스턴스로 처리했습니다! – John3136
'Logic.FrameDelay'는 스톱워치입니다. 분명히 그런 것들을 비교할 수는 없습니다. –