Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Помогите со стрельбой:((( немогу блин сделать   Найти похожие ветки 

 
JUS   (2005-11-04 01:33) [0]

Вариант 1

procedure TPlayer.DoMove(MoveCount:Integer);
begin
...
If IsButton1 in Form1.DXInput.States then begin{5}
ShootBah; // процедура
end;{Bah}
...
end;

procedure TDrob.DoMove(MoveCount:Integer);
begin
case napravlenie of
  0 : X := X + 6;
  1 : X := X - 6;
end;
If (drob[fdrob].X<0)  Or  (drob[fdrob].X>1024) Then Begin Dead; fdrob:=fdrob-1;  end;
end;

procedure ShootBah;
Begin
fdrob:=fdrob+1;
drob[fdrob]:=Tdrob.Create(Form1.DXSpriteEngine.engine);
drob[fdrob].Image:=Form1.DXImageSnarads.Items.Find("Дробь");
drob[fdrob].Width:=drob[fdrob].Image.Width;
drob[fdrob].Height:=drob[fdrob].Image.Height;
drob[fdrob].X:=Player1.X+8;
drob[fdrob].Y:=Player1.Y+8;
drob[fdrob].Z:=0;
IF LR="R" Then drob[fdrob].napravlenie:=0;
IF LR="L" Then drob[fdrob].napravlenie:=1;
end;
//LR - это в какую сторону смотрит чел

Ну чё не правильно я делаю, как надо? я в тупике блин!":-(((
Help me please!


 
JUS   (2005-11-04 01:34) [1]

Вариант 1

procedure TPlayer.DoMove(MoveCount:Integer);
begin
...
If IsButton1 in Form1.DXInput.States then begin{5}
ShootBah; // процедура
end;{Bah}
...
end;

procedure TDrob.DoMove(MoveCount:Integer);
begin
case napravlenie of
 0 : X := X + 6;
 1 : X := X - 6;
end;
If (drob[fdrob].X<0)  Or  (drob[fdrob].X>1024) Then Begin Dead; fdrob:=fdrob-1;  end;
end;

procedure ShootBah;
Begin
fdrob:=fdrob+1;
drob[fdrob]:=Tdrob.Create(Form1.DXSpriteEngine.engine);
drob[fdrob].Image:=Form1.DXImageSnarads.Items.Find("Дробь");
drob[fdrob].Width:=drob[fdrob].Image.Width;
drob[fdrob].Height:=drob[fdrob].Image.Height;
drob[fdrob].X:=Player1.X+8;
drob[fdrob].Y:=Player1.Y+8;
drob[fdrob].Z:=0;
IF LR="R" Then drob[fdrob].napravlenie:=0;
IF LR="L" Then drob[fdrob].napravlenie:=1;
end;

//LR - это в какую сторону смотрит чел

Ну чё не правильно я делаю, как надо? я в тупике блин!":-(((
Help me please!


 
JUS   (2005-11-04 01:44) [2]

Вариант 2

TDrob=class(TImageSprite) //Дробь
  anim:integer;
  napravlenie:integer; //L R
   public
   procedure DoMove (MoveCount:Integer);override;
   constructor Create(AParent: TSprite); override;
//    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
  end;


If IsButton1 in Form1.DXInput.States then begin{5}
...
{анимация}
...
Tdrob.Create(form1.DXSpriteEngine.engine);
end;

procedure TDrob.DoMove(MoveCount:Integer);
begin
case napravlenie of
   0 : X := X + 6;
   1 : X := X - 6;
end;
//IF SY<>0 Then Y:=Y-SY; /// обратите вниманиеIf (X<10) Or (X>1034) Then Dead;
end;


Работать работает, но не совсем как надо!

SY - эта переменная нужна для перемещения по Y всех объектов при перемещении игрока по вертикали

SX - аналогично по горизонтали

А как присобачить SX и SY для дроби? немогу, помогите плиз.


 
JUS   (2005-11-04 01:46) [3]


> //IF SY<>0 Then Y:=Y-SY; /// обратите вниманиеIf (X<10)
> Or (X>1034) Then Dead;
> end;

чуть исправлю
//IF SY<>0 Then Y:=Y-SY; /// обратите внимание
If (X<0) Or (X>1024) Then Dead;
end

извеняюсь)


 
JUS   (2005-11-04 01:53) [4]

Вобщем, во 2-м варианте патроны летят по Y вместе с Player1.Y почему то, а надо Drob.Y:=Drob.Y+SY;


 
grouzd[E]v ©   (2005-11-04 02:14) [5]

Ну и кто это читать будет?

---
... we are walking on a thin line and you better avoid the risk ...


 
JUS   (2005-11-04 02:21) [6]


> grouzd[E]v ©   (04.11.05 02:14) [5]
> Ну и кто это читать будет?
>
> ---

Написал только необходимое, там ничего сложного!

Значит труба дело, никто не поможет мне!
:-(


 
JUS   (2005-11-04 02:37) [7]

Привёл два варианта, первый вобще не работает!

Короче, кому лень разбирать код, обьяснить попробую так.

Игрок у меня по сути не перемещается по X и Y, а вот остольные обьекты да, относительно игрока. (когда ходит, падает, ползёт вверх). Если например игрок падает, значит SY:=+8;(ускорения нет!), если стоит SY:=0;
Когда игрок стреляет, то патроны летят уже не зависимо от движения игрока в любую сторону, если даже он падает, то патроны "падают" вместе с ним(не отдаляются вверх) . Как же сделать мне с патронами?

(Код см. выше.)

Еще забыл к коду
procedure TPlayer.DoMove(MoveCount:Integer);
...
scroller;//процедура
end;

В процедуре scroller описан код по перемещению всех обьектов, вот пример:

procedure Scroller;
var kkk:integer;
begin
For kkk:=1 to fk do Begin Kirp[kkk].X:=Kirp[kkk].X+SX; Kirp[kkk].Y:=Kirp[kkk].Y+SY; end;
For kkk:=1 to fo do Begin Ogon[kkk].X:=Ogon[kkk].X+SX; Ogon[kkk].Y:=Ogon[kkk].Y+SY; end;
For kkk:=1 to fl do Begin lest[kkk].X:=Lest[kkk].X+SX; Lest[kkk].Y:=Lest[kkk].Y+SY; end;
...
Sx:=0;
Sy:=0;
end;


Но сюда же не прилепить TDrob.X:=TDrob.X+SX; TDrob.Y:=TDrob.Y+SY;
А делать по варианту 1 см выше, чё то не то.

Помогите разобраться, пацаны!


 
JUS   (2005-11-04 07:11) [8]

Спасибо, но уже сам разобрался. Вариант1 и Вариант2 отпадает.


 
Богдан1024   (2005-11-04 15:25) [9]

>Игрок у меня по сути не перемещается по X и Y, а вот остольные обьекты >да, относительно игрока.
Чё, ты каждый раз вычисляешь позицию объектов относительно игрока??? Выходит, объекты, которые впринципе не двигаются могут менять свои координаты. Лишние вычисления.


 
JUS   (2005-11-04 15:47) [10]


>  Лишние вычисления.

подругому никак, а ты как делаеш?)


 
Богдан1024   (2005-11-04 19:42) [11]

Координаты предметов не зависят от того с какой стороны на них смотришь. Хотя для аркады на одного абсолютно всё равно :)


 
JUS   (2005-11-04 22:00) [12]


> Богдан1024   (04.11.05 19:42) [11]
> Координаты предметов не зависят от того с какой стороны
> на них смотришь. Хотя для аркады на одного абсолютно всё
> равно :)

Короче, незнаю о чём ты, но у меня всё ровно! Вопрос закрыт, сделал, всё работает.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
5-1133311365
asdqwer
2005-11-30 03:42
2006.06.04
Динамическое присвоение метода компоненту в DLL


15-1146663216
ANB
2006-05-03 17:33
2006.06.04
Где взять сборник сестер Бери ?


2-1148036197
SamProf
2006-05-19 14:56
2006.06.04
Как запустить рограмму


2-1147838742
Rubey
2006-05-17 08:05
2006.06.04
Не обновляется DBGRID


15-1146739931
Pazitron_Brain
2006-05-04 14:52
2006.06.04
Что нужно, чтобы запустить IntraWeb приложение?