|
3D-программирование Вопросы, касающиеся программирования 3D мира |
18.06.2007, 12:40
|
#1
|
Бывалый
Регистрация: 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
|
|
Re: Скорость
где то фигня с таймером, давай всю функцию
|
|
|
18.06.2007, 13:02
|
#3
|
Бывалый
Регистрация: 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
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Скорость
кстати я тоже встречал такую проблему, но незнаю как ее решить !!
и у меня в коде таймера, насколько я помню, вообще небыло !!
|
(Offline)
|
|
18.06.2007, 13:25
|
#5
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Скорость
Сообщение от IGR
кстати я тоже встречал такую проблему, но незнаю как ее решить !!
|
спасибо за надежду!)
|
(Offline)
|
|
18.06.2007, 14:58
|
#6
|
☭
Регистрация: 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
|
Бывалый
Регистрация: 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
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Скорость
мне HolyDel посоветовал для решении проблемы избавиться от твиннинга - но тогда я не смогу контролировать FPS и..и много будет еще потерь!
Тогда мне было предложено юзать дельатайминг!
Подскажите пожалуйста кто знает что это такое и, если можно, какой-нибудь с ним семпл, что бы можно было по нему понять как это работает!
А может есть еще какие-нибудь варианты для решения моей порблемки со скоростью?
|
(Offline)
|
|
19.06.2007, 01:21
|
#9
|
|
Re: Скорость
дельта тайминг ето вот что :
dt# = FPS_Stable# / FPS_Current#; fps_stable = 60 для примера
...
move# = speed# * dt#
...
при етом получается что перемещение не зависит от фпс
|
|
|
19.06.2007, 01:28
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Скорость
ну попробуй вынести обновление_врагов1 за цикл, может поможет.
|
(Offline)
|
|
19.06.2007, 09:59
|
#11
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Скорость
Сообщение от HolyDel
ну попробуй вынести обновление_врагов1 за цикл, может поможет.
|
Как за цикл?)
А обновлять-то как?
|
(Offline)
|
|
19.06.2007, 15:35
|
#12
|
Бывалый
Регистрация: 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
|
☭
Регистрация: 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
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Скорость
Сообщение от HolyDel
за
k=1 to ticks
next
цикл
|
Ничего не понял?) это к чему?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
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, время: 06:16.
|