2013-04-26 1 views
-4

Я полный newb, работающий над 2D-RTS-игрой. Пока я создал объект «пехота» и могу заставить его снимать «пулю» в указанном направлении и может только найти код для удаления пули один раз за пределами комнаты. Я хочу, чтобы пуля удалялась на расстоянии 300 пикселей от пехоты. И нужно, чтобы код был очень чистым, поэтому в конечном итоге будет много пуль. Мой вопрос: должен ли я создать прямоугольник вокруг пехоты, указать диапазон и линию визирования, а когда пуля столкнется с диапазоном = удалить? или Если класс пули говорит «когда-то созданный + пройденный путь = 300 пикселей = удалить»? ... Любой код или подсказки, которые вы можете предложить, будут очень признательны.Сделать «объект» удалять на «расстоянии», когда «создан»? C# программирование

+0

http://gamedev.stackexchange.com/ – jcollum

+6

Я бы настоятельно сказал, что если вы действительно полный новичок, вы должны начать с чего-то более простого, чем игра в формате RTS. –

+1

Я проделал более простые игры и наблюдал за многими учебниками, но никто не понимает проблему, которая у меня есть. Мы все были в таком положении в какой-то момент и время застряли где-то. И чья-то помощь всегда была лучше, чем чьи-то сомнения. –

ответ

0

Простой метод:

  • магазин точки происхождения, где создается снаряд (на ствол пистолета)
  • Каждый кадр, использовать расстояние формулу, чтобы выяснить, является ли снаряд превысил радиус попутчика ,
  • Вы можете избежать вызова в формуле расстояния по сравнению с квадратом радиуса.

    var dx = xbullet - xorigin; 
    var dy = ybullet - yorigin; 
    if (dx*dx + dy*dy > range*range) delete bullet 
    
+0

Это было очень полезно, спасибо (= –

0

Я думаю, что ваше второе предложение лучше. Если вы делаете коробку или проверяете расстояние до солдата, пуля может путешествовать дольше, если солдат бежит после пули (если пуля не движется мгновенно, то есть).

Смежные вопросы