Вниз
Скачать: CL | DM;

Что там по трению? :)   Найти похожие ветки 

 
Galiaf ©   (2006-03-02 14:58) [0]

Необходимо реализовать столкновение со стенами, DCE не подойдёт по тому, что в игре происходит установка бомб прямо в позиции игрока и в этом случае игрок застревает при установке бомб(если конечно кто знает как это реализовать в DCE or ODE, говорите). Пробовал делать движение по-своему:

procedure TDataModule1.move(napr: spec);
var
 pp: array[1..4] of byte;
begin
 x:=round(player.Position.x);
 z:=round(player.Position.z);
{  pp[1]:=round(player.Position.x+r);
 pp[2]:=round(player.Position.x-r);
 pp[3]:=round(player.Position.z+r);
 pp[4]:=round(player.Position.z-r);}

 if (player.Direction.x>0) then
   case napr of
     0: pp[1]:=round(player.Position.x+r);
     1: pp[1]:=round(player.Position.x-r)
   end
 else
   case napr of
     0: pp[1]:=round(player.Position.x-r);
     1: pp[1]:=round(player.Position.x+r)
   end;

 if (player.Direction.z>0) then
   case napr of
     0: pp[2]:=round(player.Position.z+r);
     1: pp[2]:=round(player.Position.z-r)
   end
 else
   case napr of
     0: pp[2]:=round(player.Position.z-r);
     1: pp[2]:=round(player.Position.z+r)
   end;

{lev - матрица уровня}

 case napr of
   0: //вперёд
     begin
{        if (pp[1]=x) and (pp[2]=z) then begin
         player.Position.X:=player.Position.X+player.Direction.X/10;
         player.Position.z:=player.Position.z+player.Direction.z/10
       end
       else}
         if lev[pp[1],pp[2]]=-1 then begin
           player.Position.X:=player.Position.X+player.Direction.X/10;
           player.Position.z:=player.Position.z+player.Direction.z/10
         end

     end;
{    1: //назад
     begin
       if lev[x1,z]=-1 then player.Position.X:=player.Position.X-player.Direction.X/10;
       if lev[x,z1]=-1 then player.Position.z:=player.Position.z-player.Direction.z/10
     end;
   2: //влево
     begin
       if lev[x1,z]=-1 then player.Position.X:=player.Position.x+player.Direction.z/10;
       if lev[x,z1]=-1 then player.Position.z:=player.Position.z-player.Direction.x/10
     end;
   3: //вправо}
 end;


В этом случае игра начинает страшно глючить ибо эта процедура запускается в каденсере и из-за большого количества вычислений (по моему) идёт туговато, а если переделывать так чтобы не застревал в бомбе, то вычислений ещё больше. Есть ли у кого идеи?
P. S.
 Процедурка сейчас выглядит плохо, это потому что я её уже много раз переделывал и пока осталась только обработка движения вперёд, и то не такая как надо.


 
VolanD666   (2006-03-03 05:14) [1]

Sphere+triangles


 
Galiaf ©   (2006-03-03 18:06) [2]

Это ты что только что сказал?



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.032 c
2-1166438378
unn[a]med^
2006-12-18 13:39
2007.01.07
ADO help me plz)


2-1166288517
Viper_Omsk
2006-12-16 20:01
2007.01.07
Процедура при нажатии на "крест"


4-1154781641
fufel
2006-08-05 16:40
2007.01.07
drag i drop | delphi i iexplorer


2-1166436237
cvg
2006-12-18 13:03
2007.01.07
Есть ли в Delphi что-то типа is_number?


2-1166459476
gosha73
2006-12-18 19:31
2007.01.07
Непонимаю в чем разница (указатель на запись)




   Наверх