|
3D-программирование Вопросы, касающиеся программирования 3D мира |
07.12.2006, 13:11
|
#1
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
необходим совет
Вот код:
Главный цикл:
Repeat
If KeyDown(203) ;поворот <-
pa#=pa#+1
End If
If KeyDown(205) ;поворот ->
pa#=pa#-1
End If
If KeyDown(200) ;вперед
xa1#=xa#
za1#=za#
xa#=xa#+g#*Cos(pa#+90)
za#=za#+g#*Sin(pa#+90)
If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
xa#=xa1#
za#=za1#
EndIf
End If
If KeyDown(208) ;назад
xa1#=xa#
za1#=za#
xa#=xa#-g#*Cos(pa#+90)
za#=za#-g#*Sin(pa#+90)
If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
xa#=xa1#
za#=za1#
EndIf
End If
If KeyDown(18) ;стрейф ->
xa1#=xa#
za1#=za#
xa#=xa#+g#*Cos(pa#)
za#=za#+g#*Sin(pa#)
If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
xa#=xa1#
za#=za1#
EndIf
End If
If KeyDown(17) ;стрейф <-
xa1#=xa#
za1#=za#
xa#=xa#-g#*Cos(pa#)
za#=za#-g#*Sin(pa#)
If (xa#<-31)Or(xa#>31)Or(za#<-31)Or(za#>31)
xa#=xa1#
za#=za1#
EndIf
End If
If KeyHit(1) ;выход
Exit
End If
If n>=1
polet_igrok()
;Animate q,1,n/2,0,0
EndIf
If KeyHit(57) ;выстрел
If n=0 Then vistrel_igrok(xa#,za#,pa#)
End If
RotateEntity q,0,pa#+180,0
PositionEntity q,xa#,0,za#
RotateEntity c,90,pa#,0
PositionEntity c,xa#, 10,za# ; вид сверху
UpdateWorld
RenderWorld
Flip
Forever
Процедуры:
Type vi
Field x#,y#,p#
End Type
Global n=0
Global st1=CreateSphere(5)
HideEntity st1
EntityColor st1,255,255,255
ScaleEntity st1,0.15,0.15,0.15
Function vistrel_igrok(vix#,viy#,vip#)
st.vi=New vi
st\x#=vix#
st\y#=viy#
st\p#=vip#
PositionEntity st1,st\x#,1,st\y#
ShowEntity st1
n=1
End Function
Function polet_igrok()
For st.vi=Each vi
If n=20
Delete st
HideEntity st1
n=0
Else
n=n+1
st\x#=st\x#+5*g#*Cos(st\p#+90)
st\y#=st\y#+5*g#*Sin(st\p#+90)
PositionEntity st1,st\x#,1,st\y#
EndIf
Next
End Function
не понимаю, почему при нажатии вперед+пов_влево(+стрейф_любой) или назад+...+... - выстрела не происходит (if -> false(?!)) ... если кто знает, объясните пожалуйста... вперед+вправо(+ любой_стрейф) - работают прекрасно...
|
(Offline)
|
|
07.12.2006, 15:19
|
#2
|
Бывалый
Регистрация: 19.09.2005
Сообщений: 649
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: необходим совет
Хм... довольно интересно.. Но вроде как бы код то и там и там одинаковый (на сколько я посмотрел). По идее всё должно быть норм. А ты пробовал начинать сначала нажимать стрейф и пробовать стрелять сразу, а не после стрелок ?
|
(Offline)
|
|
07.12.2006, 16:05
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: необходим совет
Можно выкладывать КОМПИЛИРУЕМЫЙ исходник?!
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
07.12.2006, 16:44
|
#4
|
|
Re: необходим совет
impersonalis
+1
|
|
|
08.12.2006, 15:54
|
#5
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
нажимать не пробовал, но пробовал функцию, v_i вставлять в разные места и даже делать несколько ее копий...
вот... Вложение 2443...
|
(Offline)
|
|
09.12.2006, 02:01
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: необходим совет
[imho]
не думаю что это програмная ошибка, попробуй сменить клавиши, ингода бывает такое, что нажимаеш несколько клавиш и ниче не работает.
[/imho]
|
(Offline)
|
|
09.12.2006, 15:36
|
#7
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
Понятно... у меня еще вопрос есть...
доп. у меня два файла с анимациями, мне надо просмотреть эти анимации одновременно (за один проход цикла - в моем примере)... мне придется делать еще 1 файл анимации?..
|
(Offline)
|
|
09.12.2006, 15:55
|
#8
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
HolyDel, ты прав...
|
(Offline)
|
|
10.12.2006, 01:31
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: необходим совет
За один проход цикла просмотреть анимацию будет проблематично, будет один вызов UpdateWorld и RenderWorld.
Если имелось ввиду возможность наложения анимации на модель, то есть такие комманды LoadAnimSeq. Тогда мжно делаь так
[blitz]
mesh=loadanimmesh("Body.b3d")
walk=loadanimseq("walk.b3d")
idle=loadanimseq("idle.b3d")
[/blitz]
собсно mesh будет указателем на модель и файл модели должен содежать сетку объекта и кости, два других файла должны содержать кости и их анимацию (моделлеры, поправьте если не так).
walk и idle содержат номер секвенции анимации для хотьбы и простоя соответственно
|
(Offline)
|
|
10.12.2006, 21:40
|
#10
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
Понятно... спасибо, но наверное легче переменную на разные виды анимаций завести, тогда и команду animate один раз использовать придется...
еще вопр ("вопросы, вопросы требуют ответов"): можно ли из блица на модель (3ds), положить текстуру или задать ей цвет (entitytexture и entitycolor - не работают)?
|
(Offline)
|
|
11.12.2006, 01:56
|
#11
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: необходим совет
предыдушее сообщение было посвящено b3d моделям.
посмотри здесь, для задания цвета анимированной модели, для текстурирования анимированной модели придеццо поменять одну строчку
http://www.boolean.name/showthread.php?t=2073
|
(Offline)
|
|
11.12.2006, 10:49
|
#12
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
ясно... пока все...
|
(Offline)
|
|
19.12.2006, 02:44
|
#13
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
Снова вопрос...
когда смотрел хелп (не помню какой, но он точно был на русском), заметил одну команду (ее название, собственно, я и хочу спросить)... она очищает буфер (что ли?) нажатых клавиш...
Если кто помнит и хочет подсказать, жду ответ...
|
(Offline)
|
|
19.12.2006, 02:53
|
#14
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: необходим совет
FlushKeys()
|
(Offline)
|
|
19.12.2006, 07:23
|
#15
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: необходим совет
Спасибо, выручил...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:15.
|