![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В очередь!!!
Jackson © (2002-10-14 23:20:00)
Люди,как сделать,чтобы пуля стреляла очередями?
Сенченков паша (2003-03-26 13:14:00) [1]
всееееееееееее урооооддддддды!!!!!!!!!!!!
Axis_of_Evil (2002-10-29 16:39:00) [2]
Союз нерушимый республик свободных
Собой объединили великие
pasha676, Alek Aaz, Ketmar, SI-riuss, Axis_of_Evil
Jackson (2002-10-28 16:04:00) [3]
pasha676,
Ууупппссс!!!Ты прав...Теперь получилось...Благодарю!!!
pasha676 (2002-10-28 14:17:00) [4]Короче, Jackson, ты скопировал как я понял кусок кода с www.gamedev.ru; обрати внимание на (с того же сайта)
with TPlayerFa.Create(Engine) do
begin
PixelCheck := True;
( "Pula")Короче, Jackson, ты скопировал как я понял кусок кода с www.gamedev.ru; обрати внимание на (с того же сайта)
with TPlayerFa.Create(Engine) do
begin
PixelCheck := True;
Image := form1.dxImageList1.Items.Find("Pula");
X := Self.X+Self.Width -40;
Y := Self.Y+Self.Height -80;
Width := Image.Width;
Height := Image.Height;
end;
oldlngpolet := lngpolet; //после создания пули - последняя становится первой - тут тут читай!!!!!
end;
Alek Aaz (2002-10-28 12:20:00) [5]
Попробуй
...
if x<=0 then
x:=1;
oldlngpolet:=lngpolet;
lngpolet:= lngpolet + MoveCount;
end;
Он у тебя лепит когда пытаешься в перед лететь?
Вообще как то все странно выглядит.
Своими словами опиши как ты это понимаешь.
Я понимаю так, кнопка нажата - создаешь спрайт-пулю и посылаешь его к цели. Через некоторое время ее полета, она "гибнет" или попадает в цель. У тебя я чей-то этого не вижу.
pasha676 (2002-10-28 09:26:00) [6]
Никогда не делал спрайтовые феньки - но вот навскидку:
1) И где мы задаем oldlngpolet? Начальное?
2) Inc(lngpolet); - это что за хрен с сутане?
3) ОТкуда задержка в 250? Сколько это будет физически в мс?
4) Для временные задержек, имхо лучше считать не movecount, а GetTickCount, ибо насколько я понимаю мувекаунты могут быть привязаны к аппаратке, а тикикаунты все же привязаны ко времени.
Jackson (2002-10-27 21:48:00) [7]Описание класса:
TPlayerSprite = class(TImageSprite)
private
lngpolet: integer;
oldlngpolet: integer;
protected
procedure DoMove(MoveCount:Integer);override;
end;
Процедура:
Procedure TPlayerSprite.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if isLeft in Form1.DXInput1.States then x:= x-5;
if isRight in Form1.DXInput1.States then x:= x+5;
if x<0 then x:=0;
if isUp in Form1.DXInput1.States then
begin
if lngpolet - oldlngpolet>=250 then
begin
Inc(lngpolet);
with TPlayerFa.Create(Engine) do
begin
PixelCheck := True;
( "Pula")Описание класса:
TPlayerSprite = class(TImageSprite)
private
lngpolet: integer;
oldlngpolet: integer;
protected
procedure DoMove(MoveCount:Integer);override;
end;
Процедура:
Procedure TPlayerSprite.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
if isLeft in Form1.DXInput1.States then x:= x-5;
if isRight in Form1.DXInput1.States then x:= x+5;
if x<0 then x:=0;
if isUp in Form1.DXInput1.States then
begin
if lngpolet - oldlngpolet>=250 then
begin
Inc(lngpolet);
with TPlayerFa.Create(Engine) do
begin
PixelCheck := True;
Image := form1.DXImageList1.Items.Find("Pula");
x:= Self.X+Self.Width - 40;
y:= Self.Y+Self.Height - 80;
Width:= Image.Width;
Height:= Image.Height;
end;
end;
end;
if y>= form1.DXDraw1.SurfaceHeight - image.Height then
y:= form1.DXDraw1.SurfaceHeight - image.Height;
if x>= form1.DXDraw1.SurfaceWidth - image.Width then
x:= form1.DXDraw1.SurfaceWidth - image.Width;
if y<= 0 then
y:=1;
if x<=0 then
x:=1;
lngpolet:= lngpolet + MoveCount;
end;
ПОМОГИТЕ!!!ПЛИЗ!!!
Alek Aaz (2002-10-25 10:50:00) [8]
Jackson Мож кусок своего кода покажешь. Проще ткнуть носом чем самому сочинять...
pasha676 (2002-10-25 09:35:00) [9]
Джэксон, ты меня радуешь :). То есть для каждого объекта этого класса будет своя переменная :). Первая пуля со своей. Она равна нулю. Вторая пуля со своей, она опять равна нулю, выражение GetTickCount - LastShootTime следовательно будет равно GetTickCount - т.е. очень большое. Как следствие пуля летит сразу. Создаешь третью пулю у нее LastShootTime создается опять заново и опять равна нулю... Понял в чем ошибка и где LastShootTime надо описать?
Jackson (2002-10-24 21:52:00) [10]
Я описывал эту переменную в описании класса TPlayerSpite.Может её надо,как глобальную?
Axis_of_Evil
Нашёл по карте вход!
Axis_of_evil (2002-10-24 16:20:00) [11]
Если он так написал действительно,
то с ДНК у него проблемы,
но КАК он в I-NET попал ?
pasha676 (2002-10-24 15:43:00) [12]
Не удивлюсь если паренек сделал все буквально:
var
LastShootTime: Integer = 0; //Cardinal
if Keys[K_SHOOT] then
begin
// Нажали клавишу стрельбы:
if (GetTickCount - LastShootTime >= dt) then
begin
// уже можно выпускать новую пулю?
LastShootTime := GetTickCount;
DoShoot;
end;
То есть объявил LastShootTime как локальную и каждый раз у него
GetTickCount - LastShootTime ессесно получается больше dt :)
Axis_of_Evil (2002-10-24 14:29:00) [13]
2 Ketmar:
10 баллов, Das Stimmt!
Ketmar (2002-10-22 09:59:00) [14]
2Jackson:
тогда точно - застрелиться. это, видимо, ошибка не в коде, а в ДНК...
Satanas Nobiscum! 22-Oct-XXXVII A.S.
Jackson (2002-10-21 22:56:00) [15]
ОГО!!!!Это 3.14здец!!!Нихрена не получается!!!Я в шоке!!!Делал всё , как в справочнике, делал как в примере,делал как Вы мне советовали - НИХРЕНА!!!!Или вобще не стреляет,или сплошная линия... Пойду застрелюсь....
SI-riuss (2002-10-20 22:55:00) [16]
Ну сделай ты их штук пять. Сколько их успеет вылететь пока первая достигнет самой отдаленной цели? После выхода последней пули первая пусть возвращается в боекомплект. И далее опять по кругу.
Axis_of_Evil (2002-10-18 11:53:00) [17]
2 Ketmar(Getman):
1)В алкогоритме ты прав, упустил я строку
2)Ну тыж понял что он спросил
Ketmar (2002-10-18 10:28:00) [18]
код от Axis_of_Evil, чуть подправленный:
var
LastShootTime: Integer = 0; //Cardinal
if Keys[K_SHOOT] then
begin
// Нажали клавишу стрельбы:
if (GetTickCount - LastShootTime >= dt) then
begin
// уже можно выпускать новую пулю?
LastShootTime := GetTickCount;
DoShoot;
end;
при dt, равном, к примеру 1000 промежуток между выстрелами будет >= одной секунде. comprenez vous?
Satanas Nobiscum! 18-Oct-XXXVII A.S.
Jackson (2002-10-17 22:41:00) [19]
Si-riuss,
Мне надо: нажимаешь на кнопочку - вылетают пули с промежутками между ними.
У меня сейчас: нажимаешь на кнопочку - летит сплошная линия этих пуль!!!
Я надеюсь, ты понял мою проблему!!!
Axis_of_Evil,
(за магарыч забудь:))У меня всё равно не получается!Продолжает идти сплошная линия.Я уже и документацию читал,сделал всё,как у них,и не получается - или вообще нихрена не вылетает, или линия сплошная!Я уже не знаю,что делать...
Ketmar (2002-10-17 20:20:00) [20]
2Axis_of_Evil:
благородный дон чем-то недоволен? пишите в мыло, я его не скрываю.
если вы не заметили, я не издеваюсь. я отвечаю в стиле заданного вопроса. на грамотно заданные вопросы я отвечаю (если отвечаю) соответствующе. кто же доктор спрашивающим, коли они не могут сформулировать вопрос так, чтобы на него можно было ответить?
Satanas Nobiscum! 17-Oct-XXXVII A.S.