Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизDelphiXМножество самостоятельных и идентичных друг другу объектов Найти похожие ветки
← →
Pandemonium (2003-07-07 09:45) [0]Народ, у меня такая проблема. Есть один готовый объект, или класс,-картинка, способная двигаться по определенному закону, сталкиваться и т.д. Нужно каждое определенное время порождать(<=50) такой же, независимый с первым объект, самостоятельно живущий. Если просто создавать объект(в OnTimer), после первого, то он появляется в спрайте вместе с первым(слеплены!) и движется вместе с ним в кадре, притом что направление движения вообщем объктов случайно (4 направления, через Case of), Collision же одинаков. Как это сделать без описания, допустим 50 объектов, а пользуясь только одним?
← →
Михаил Макушев (2003-07-07 11:06) [1]Пожалуй что никак. А по вашему как хранить информацию о свойствах (скажем положении, но в принципе и других) множества порожденных объектов, в одной и той же ячейке памяти (которая есть суть - переменная)?
Можете, допустим, создать динамический массив на требуемые X и Y и добавлять в него нужные координаты объектов по мере необходимости.
← →
3d[Power] (2003-07-07 18:48) [2]1) Создавай объект в рандомной позиции, при этом проверяй расстояние до близлежащих объектов, если больше N, значит они слипаться не будут => создаем.
2) Если тебе надо чтобы они спавнились всегда из одной точки, то спавни с интервалом времени, и при спавне проверяй расстояние до близ объектов... если больше N ...
← →
HoloCaust (2003-07-08 01:17) [3]Pandemonium: У меня была такая проблема и вот каким способом я её решил (с учетом того, что писал я на DelphiX) :
-создал класс нужных мне объектов
//Класс чего-то там
TClassSSS = class(TImageSprite)
-далее в var прописал:
ClassSSS: TClassSSS;
ClassSSSX: array[0..99] of Integer; //положение объектов по X
ClassSSSY: array[0..99] of Integer; //положение объектов по Y
-у меня была процедура столкновения рокеты с чем-нибудь, а далее ёё уничтожение и создание на этом месте взрыва
//Столкновение
procedure TRocket.DoCollision(Sprite: TSprite; var Done: Boolean);
var
n : integer;
begin
n:=1;
if Sprite is TMap then begin
ClassSSSX[1+n]:=trunc(X);
ClassSSSY[1+n]:=trunc(Y);
Self.Dead;
ClassSSS:= TClassSSS.Create(DXForm.DXSpriteEngine.Engine);
with TClassSSS(ClassSSS) do
begin
DXForm.DXWaveList.Items.Find("explo").Play(false);
Image := DXForm.DXImageList.Items.Find("explo");
Width := Image.Width;
Height := Image.Height;
X := ClassSSSX[1+n]; //Координата X
Y := ClassSSSY[1+n]; //Координата Y
Z := 99;
Collisioned := true
end;
end;
end;
-странно немного, но работает на все 100 или даже 200
← →
Sorvi- Golova (2003-07-09 15:35) [4]Разрешается использование тегов форматирования текста:
жирный наклонный подчеркнутый,
а для выделения текста программ, используйте...
и не забывайте закрывать теги! :)
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c