Вниз
Скачать: 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.027 c
2-1166207234
Bolt
2006-12-15 21:27
2007.01.07
Как на форму программно добавить кнопку??


2-1166192315
И. Павел
2006-12-15 17:18
2007.01.07
Сортировка по щелчку на заголовке таблицы


15-1166517127
WondeRu_at_work
2006-12-19 11:32
2007.01.07
Карта этого сайта - почти ничего не осталось


15-1166430463
Чапаев
2006-12-18 11:27
2007.01.07
Ещё про демократию и толерантность %-)


15-1166385056
jack128
2006-12-17 22:50
2007.01.07
XL Report




   Наверх