Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GLScene как правильно удалить объект? [Delphi, GLScene, Windows]


КиТаЯц ©   (2004-04-22 09:51:00) 

Вопрос для тех кто работал с GLScene (!)
Ситуация такая: насоздавал объектов tActor (враги). SMD модели. Они бегют и на героя нападают. Герой из убивает. Включается анамация типа смерть. А как правильно вообще удалить объект из памяти? ну... и труп соответственно :) Как не пробовал все одно - access violation (будь он неладен :( ) Поделитесь кодом плиз. Спасибо.


Yar-Com   (2004-04-23 09:18:00) [1]

хе )) яж говорю что нерублю в GLScene потому и совет общий был )


КиТаЯц   (2004-04-23 09:08:00) [2]

Мдяс... Спасибо за совет. Долго я углы с перпендикулярами вычислял, но винтовка выровнялась когда сделал так:

procedure TMainForm.GLCadencerProgress(Sender: TObject; const deltaTime, newTime: Double);
begin
...
Винтовка.PointTo(GLSCene.FindSceneObject('Вертолет'),YHmgVector);
Партизан тоже на вертолет смотрит...
Партизан.PointTo(GLSCene.FindSceneObject('Вертолет'),YHmgVector);А вот чтобы об брюхо к небу не задирал...
Партизан.Up.y := 0;
...
end;


Yar-Com   (2004-04-22 15:26:00) [3]

ну у винтовки есть вектор указывающий ее напрвление

находишь вектор указывающий на вертолет

вычисляешь угол между вектором винтовки и вектором "вертика"

ну а далее поворачиваешь вектор винтовки вокруг перпендикуляра к плоскости образованной из вектора направления винтовки и вектора направления на вертолет %)

чтоб найти этот перпендикуляр нужно произвести операцию векторного умножения над вектором винтовки и вектором напрвления на вертолет

вроде все....


КиТаЯц   (2004-04-22 15:10:00) [4]

Хех... Получилось! Держите, может кому еще пригодится

Вот так я добавлял:
var NewEnemy: tGLActor;
begin
NewEnemy:= tGLActor(GLScene1.Objects.AddNewChild(tGLActor));
NewEnemy.Name:='Vrag'+inttostr(nomer); // глобальная переменная типа "табельный номер" :)
 with NewEnemy do begin
   LoadFromFile('файл');
   ...
   // задаем свойства
   ...  
 end;
end;


А вот так Vrag as Trup :) без проблемм удаляется...
var ToDel: tComponent;
begin
ToDel:= nil;
ToDel:= GLScene1.FindSceneObject('Vrag'+inttostr(nomer));
if ToDel <> nil then ToDel.Destroy;
end;


Еще вопросик... Как в GLScene ТОЧНО поворачивать статичный (или не статичный) объект в сторону движущегося. Ну типа автоматическая винтовка иракского партизана держит не прицеле летящий американский апач? А то у меня как-то криво наводится...


Yar-Com   (2004-04-22 09:57:00) [5]

а ты напиши как ты удаляешь?  я в GLScene не бум бум пользуюсь своим двиглом, но честно говоря не вижу в чем проблемма...

if Vrag.State = vsTrup then Vrag.Destroy;

:^)


Наверх

Титульная страница Поиск, карта сайта Написать письмо