Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизВо время движения персонаж мигает как фонарь =) Найти похожие ветки
← →
Sos (2004-01-19 20:02) [0]DelphiX, Помогите, он создаеться в процедуре
procedure TMainForm.DXTimerTimer(Sender: TObject; LagCount: Integer);
//вот он сам
DXImageList1.Items[8].Draw(DXDraw.Surface,XPos*HW - PosX + (XTemp mod HW) ,YPos * HW - PosY + (YTemp mod HW),0);
Во время хотьбы по миру он мигает все время, тоесть видимо не каждый кадр он рисуеться, может знает что делать надо?
← →
ZAROLF © (2004-01-19 20:14) [1]Ну если у тебя кадров меньше чем указано в AnimCount, будет выводиться несуществующий кадр и накрывать остальные.
← →
Sos (2004-01-19 20:37) [2]это как посмотреть?
у меня просто игрок одна статичная картинка, без анимации.
← →
ZAROLF © (2004-01-19 20:48) [3]Поставь в FormCreate DoubleBuffered:=true;
← →
Sos (2004-01-19 20:54) [4]не помогает =(, причем он не просто мигает, его силует показываеться в соседних клетках бывает, при этом он в них не бывал даже, вообще как то непонятно.
← →
pavel_k (2004-01-19 21:21) [5]Просьба полный код.
(если не лень, пошли мне на мыло весь исходник, гляну).
← →
ZAROLF © (2004-01-19 21:22) [6]Delphix он и есть Delphix. Я сам пожалел что на нём писать начал.
Всё, допишу аркаду и перехожу на PowerDraw, и тебе советую.
Вот когда дойдёш в своей игре до столкновений, поймёшь о чём я.
← →
pavel_k (2004-01-19 21:27) [7]>ZAROLF ©
IMHO, в других средствах столкновения обрабатывать не легче, чем в DelphiX.
← →
ZAROLF © (2004-01-19 21:34) [8]>pavel_k (19.01.04 21:27) [7]
>ZAROLF ©
>IMHO, в других средствах столкновения обрабатывать не легче, >чем в DelphiX.
-----------------------------------------------------------------
Да легко, но зато как глючно.
← →
pavel_k (2004-01-19 21:38) [9]А проблема в чем?
InterSectRect(temp, r1,r2) возвращает true, если r1 и r2 пересекаются, (все параметры типа TRect), поэтому вполне можно сделать проверку столкновений вручную.
Да и в DelphiX с Collision все работает нормально, только не слишком быстро, но чтобы глючно - я не замечал.
← →
ZAROLF © (2004-01-19 21:47) [10]> Да и в DelphiX с Collision все работает нормально, только
> не слишком быстро, но чтобы глючно - я не замечал.
-----------------------------------------------------------------
Вот пример:
У меня в аркаде за убийство чела, даётся УЗИ(вид оружия). И вот если попасть в это оружие пулей, оно присвоится плееру. Хотя об
этом в коде я и не писал - что мне надо именно так.
← →
Sos (2004-01-19 21:57) [11]Павел, выслал код
← →
pavel_k (2004-01-20 16:10) [12]>ZAROLF ©
Ну пошли мне полный код, я посмотрю, в 97% случаев виноват программист, а не глючный DelphiX, мастдай, Билл Гейтс, etc.
Так могу только предположить, что у тебя вTUSI.DoColllision
написано типадать игроку узи
.
При столкновении с пулей точно также вызывается TUSI.DoCollision и игроку дается узи.
Хотя это только предположение, найти ошибку не видя кода ну о-о-очень сложно.
>sos
Подробно написал на мыло, коротко - у тебя 2 таймера, работают они не синхронно (т.е. не всегда по-очереди), из-за этого мигание.
Если поможет/не поможет пиши сюда.
ЗЫ Разве Sos это имя? Ты нормальный ник возьми. :) Или расшифровку придумай :) .
← →
Jenaxx © (2004-01-20 17:03) [13]Ник нормальный вот он =), спасибо большое за помощь, осталось столкновения сделать, просто в игре я хочу чтоб персонаж ходил курсорами, хочу вспомнить Кингс Баунти и прочие замечательные игры, в тот тип игры что делаю это очень пойдет.
Мигать перестал но теперь при столкновение с домом табличка показывающая что дом найден уже не пропадает =)), щас буду искать из за чего это.
← →
ZAROLF © (2004-01-20 18:09) [14]>pavel_k (20.01.04 16:10) [12]
> Ну пошли мне полный код, я посмотрю, в 97% случаев виноват
> программист, а не глючный DelphiX, мастдай, Билл Гейтс,
> etc.
> Так могу только предположить, что у тебя в
> TUSI.DoColllision
> написано типа
> дать игроку узи
> .
> При столкновении с пулей точно также вызывается TUSI.DoCollision
> и игроку дается узи.
> Хотя это только предположение, найти ошибку не видя кода
> ну о-о-очень сложно.
-----------------------------------------------------------------
//Это пуля
constructor TShoot1.Create(AParent: TSprite);
begin
inherited Create(AParent);
Image := MainForm.ImageList.Items.Find("Shoot1");
Width := Image.Width;
Height := Image.Height;
end;
destructor TShoot1.Destroy;
begin
inherited Destroy;
end;
procedure TShoot1.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TPlayer then
begin
life:=life-5;
dead;
end;
if Sprite is TMap then
dead;
if Sprite is TUzi then // пока решил так, но это ни дело
dead;
end;
//здесь УЗИ в подарок
constructor TUzi.Create(AParent: TSprite);
begin
inherited Create(AParent);
Image := MainForm.ImageList.Items.Find("uzi_present");
Width := Image.Width;
Height := Image.Height;
end;
Procedure TUzi.DoMove(MoveCount: Integer);
begin
if life25 <=0 then
dead;
Collision;
end;
destructor TUzi.Destroy;
begin
inherited Destroy;
end;
procedure TUzi.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
if Sprite is TPlayer then
dead;
Gun.Dead;
ample:=+50;
sound8:=cbrg_CreateSound("media\sound8.wav");
cbrg_PlaySound(sound8,false);
if Direct = -1 then
UziLeft := TUziLeft.Create(Engine)
else
if Direct = 1 then
UziRight := TUziRight.Create(Engine);
end;
← →
pavel_k (2004-01-20 19:05) [15]>ZAROLF ©
Стоило открыть новую ветку, ну да ладно.
Исправь в usi.docollision, у тебя если спрайт - игрок, умираем и выполняем то, что дальше, если не игрок - не умираем (dead только если Sprite is TPlayer), а пушку даем. Поставь begin end; при проверке, вот так:if Sprite is TPlayer then
begin
//тут все, что у тебя написано
dead;
Gun.Dead;
ample:=+50;
sound8:=cbrg_CreateSound("media\sound8.wav");
cbrg_PlaySound(sound8,false);
if Direct = -1 then
UziLeft := TUziLeft.Create(Engine)
else
if Direct = 1 then
UziRight := TUziRight.Create(Engine);
end;
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c