![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;
:^)