Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 18.06.2007, 12:40   #1
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Скорость

Проблема такая

Если увеличиваю кол-во объектов ИИ (врагов) у них добавляется скорость

For en1.enemy1 = Each enemy1
en1\speed#=.1

If en1\timer#<=10 Then en1\speed#=.1 Else en1\speed#=0
Это кусок кода из функции, которая в главном цикле

Больше en1\speed# нигде особо не фигурирует...я даже не представлляю в чем там трабла?
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 12:59   #2
jimon
 
Сообщений: n/a
Re: Скорость

где то фигня с таймером, давай всю функцию
 
Ответить с цитированием
Старый 18.06.2007, 13:02   #3
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Function fnUpdateEnemy1()

For en1.enemy1 = Each enemy1

en1\speed#=.1

Local en1_ygol = Int (EntityYaw (en1\obj))

en1\retval = fnWhatVperedi(en1\obj,Int(EntityYaw (en1\obj)))

If (en1_ygol=0) Then 
 If (fnWhatVperedi(en1\obj,0)>0) Then en1\Understand_f=1 Else en1\Understand_f=0
 If (fnWhatVperedi(en1\obj,180)>0) Then en1\Understand_b=1 Else en1\Understand_b=0
 If (fnWhatVperedi(en1\obj,90)>0) Then en1\Understand_l=1 Else en1\Understand_l=0
 If (fnWhatVperedi(en1\obj,-90)>0) Then en1\Understand_r=1 Else en1\Understand_r=0
EndIf

If (Abs(en1_ygol)=180) Then 
 If (fnWhatVperedi(en1\obj,180)>0) Then en1\Understand_f=1 Else en1\Understand_f=0
 If (fnWhatVperedi(en1\obj,0)>0) Then en1\Understand_b=1 Else en1\Understand_b=0
 If (fnWhatVperedi(en1\obj,-90)>0) Then en1\Understand_l=1 Else en1\Understand_l=0
 If (fnWhatVperedi(en1\obj,90)>0) Then en1\Understand_r=1 Else en1\Understand_r=0
EndIf

If (en1_ygol=90) Then 
 If (fnWhatVperedi(en1\obj,90)>0) Then en1\Understand_f=1 Else en1\Understand_f=0
 If (fnWhatVperedi(en1\obj,-90)>0) Then en1\Understand_b=1 Else en1\Understand_b=0
 If (fnWhatVperedi(en1\obj,180)>0) Then en1\Understand_l=1 Else en1\Understand_l=0
 If (fnWhatVperedi(en1\obj,0)>0) Then en1\Understand_r=1 Else en1\Understand_r=0
EndIf

If (en1_ygol=-90) Then 
 If (fnWhatVperedi(en1\obj,-90)>0) Then en1\Understand_f=1 Else en1\Understand_f=0
 If (fnWhatVperedi(en1\obj,90)>0) Then en1\Understand_b=1 Else en1\Understand_b=0
 If (fnWhatVperedi(en1\obj,0)>0) Then en1\Understand_l=1 Else en1\Understand_l=0
 If (fnWhatVperedi(en1\obj,180)>0) Then en1\Understand_r=1 Else en1\Understand_r=0
EndIf


Local en1_x = Int((EntityX (en1\obj)/10))
Local en1_z = Int((EntityZ (en1\obj)/10))
          

If (playfield(en1\En1Arx,en1\En1Arz)=5) Then playfield(en1\En1Arx,en1\En1Arz) = 0

playfield(en1_x,en1_z) = 5

en1\En1Arx = en1_x
en1\En1Arz = en1_z

en1\timer#=en1\timer#+en1\speed#
;Необработанный кусок ИИ

 

If en1\timer#<=10 Then en1\speed#=.1 Else en1\speed#=0


If en1\timer#>=10 And  en1\understand_f=0 Then en1\timer#=0

If en1\timer#>=10 And  en1\understand_f=1

	If en1\understand_b=0

.f_dir
 F_dir=Rand(1,4)
Select F_dir

 	Case 1
	If en1\ugol=0 Then en1\ugol=180 Else Goto f_dir
	Case 2
	If en1\ugol=180 Then en1\ugol=0 Else Goto f_dir
 	Case 3
	If en1\ugol=90 Then en1\ugol=-90 Else Goto f_dir
	Case 4
	If en1\ugol=-90 Then en1\ugol=90 Else Goto f_dir
End Select
	
End If 

	If en1\understand_b=1 And en1\understand_f=1

.LR_dir
 LR_dir=Rand(1,6)
Select LR_dir

 	Case 1
	If en1\ugol=0 Then en1\ugol=90 Else Goto lr_dir
	Case 2
	If en1\ugol=0 Then en1\ugol=-90 Else Goto lr_dir
 	Case 3
	If en1\ugol=180 Then en1\ugol=-90 Else Goto lr_dir
	Case 4
	If en1\ugol=180 Then en1\ugol=90 Else Goto lr_dir
	Case 5
	If en1\ugol=90 Then en1\ugol=180 Else Goto lr_dir
	Case 6
	If en1\ugol=-90 Then en1\ugol=0 Else Goto lr_dir
End Select
	
End If 

If en1\understand_b=1 And en1\understand_f=1 And en1\understand_l=1 And en1\understand_r=1 Then en1\ugol=0


End If 

MoveEntity en1\obj,0,0,en1\speed#
RotateEntity en1\obj,0,en1\ugol,0


Next

End Function
Напомните мне пожалуйста команду, когда текст пишется над объектом (и следует за ним) вылетело из головы эта команда... - вспомнил. ненужно

Хотел бы этой командой показать (вывести) скорость для КАЖДОГО ои объекта в типе. Там нужны примудрости? как мне показать, что это объект номер такой-то и скорость его такая-то...?
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 13:16   #4
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Re: Скорость

кстати я тоже встречал такую проблему, но незнаю как ее решить !!
и у меня в коде таймера, насколько я помню, вообще небыло !!
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 13:25   #5
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Сообщение от IGR
кстати я тоже встречал такую проблему, но незнаю как ее решить !!
спасибо за надежду!)
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 14:58   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скорость

Project-ом его, Project-ом/
Function textentity(ent,text$="bugaga")
cameraproject cam,entityx(ent,1),entityy(ent,1),entityz(ent,1)
text projectedx(),projectedy()-30,text,1,0
end function
да, cam - ето хэндл на камеру. он должен быть глобальным.
(Offline)
 
Ответить с цитированием
Старый 18.06.2007, 17:12   #7
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Сообщение от HolyDel
Project-ом его, Project-ом/
Function textentity(ent,text$="bugaga")
cameraproject cam,entityx(ent,1),entityy(ent,1),entityz(ent,1)
text projectedx(),projectedy()-30,text,1,0
end function
да, cam - ето хэндл на камеру. он должен быть глобальным.
Спасибо за комощь по прожеки, а по глобальному вопросу? Хоть что-нитьб? А то они правда очен быстро "ходят"
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 01:19   #8
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

мне HolyDel посоветовал для решении проблемы избавиться от твиннинга - но тогда я не смогу контролировать FPS и..и много будет еще потерь!

Тогда мне было предложено юзать дельатайминг!

Подскажите пожалуйста кто знает что это такое и, если можно, какой-нибудь с ним семпл, что бы можно было по нему понять как это работает!

А может есть еще какие-нибудь варианты для решения моей порблемки со скоростью?
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 01:21   #9
jimon
 
Сообщений: n/a
Re: Скорость

дельта тайминг ето вот что :

dt# = FPS_Stable# / FPS_Current#; fps_stable = 60 для примера
...
move# = speed# * dt#
...

при етом получается что перемещение не зависит от фпс
 
Ответить с цитированием
Старый 19.06.2007, 01:28   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скорость

ну попробуй вынести обновление_врагов1 за цикл, может поможет.
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 09:59   #11
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Сообщение от HolyDel
ну попробуй вынести обновление_врагов1 за цикл, может поможет.
Как за цикл?)

А обновлять-то как?
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 15:35   #12
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Пробовал варианты...что-то не получилось

dt# = FPS_Stable# / FPS_Current#; fps_stable = 60 для примера
...
move# = speed# * dt#

расскажите об этом по подробнее...или еще о чем-нить!

Нужно как-то ... снизить скорость ИИ
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 20:48   #13
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Скорость

за
k=1 to ticks
next
цикл
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 22:06   #14
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: Скорость

CreateTimer(25) тебе в помощь!
25 фпс для любой игры пойдет!!!
(Offline)
 
Ответить с цитированием
Старый 19.06.2007, 22:24   #15
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Re: Скорость

Сообщение от HolyDel
за
k=1 to ticks
next
цикл
Ничего не понял?) это к чему?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скорость сакачки ger1234567 Delphi 0 31.12.2008 23:30
Тест на скорость newman Болтовня 1 04.05.2008 23:42
Скорость игры ZeFiR Основной форум 3 28.11.2006 14:15
Скорость smaller 3D-программирование 5 21.08.2006 16:02


Часовой пояс GMT +4, время: 20:07.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com