forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   необходим совет (http://forum.boolean.name/showthread.php?t=2061)

mudriy 07.12.2006 13:11

необходим совет
 
Вот код:
Код:

Главный цикл:
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(?!)) ... если кто знает, объясните пожалуйста... вперед+вправо(+ любой_стрейф) - работают прекрасно...

KRIK 07.12.2006 15:19

Re: необходим совет
 
Хм... довольно интересно.. Но вроде как бы код то и там и там одинаковый (на сколько я посмотрел). По идее всё должно быть норм. А ты пробовал начинать сначала нажимать стрейф и пробовать стрелять сразу, а не после стрелок ?

impersonalis 07.12.2006 16:05

Re: необходим совет
 
Можно выкладывать КОМПИЛИРУЕМЫЙ исходник?!

jimon 07.12.2006 16:44

Re: необходим совет
 
impersonalis
+1

mudriy 08.12.2006 15:54

Re: необходим совет
 
Вложений: 2
нажимать не пробовал, но пробовал функцию, v_i вставлять в разные места и даже делать несколько ее копий...
вот...Вложение 2443...

HolyDel 09.12.2006 02:01

Re: необходим совет
 
[imho]
не думаю что это програмная ошибка, попробуй сменить клавиши, ингода бывает такое, что нажимаеш несколько клавиш и ниче не работает.
[/imho]

mudriy 09.12.2006 15:36

Re: необходим совет
 
Понятно... у меня еще вопрос есть...
доп. у меня два файла с анимациями, мне надо просмотреть эти анимации одновременно (за один проход цикла - в моем примере)... мне придется делать еще 1 файл анимации?..

mudriy 09.12.2006 15:55

Re: необходим совет
 
HolyDel, ты прав...

HolyDel 10.12.2006 01:31

Re: необходим совет
 
За один проход цикла просмотреть анимацию будет проблематично, будет один вызов UpdateWorld и RenderWorld.
Если имелось ввиду возможность наложения анимации на модель, то есть такие комманды LoadAnimSeq. Тогда мжно делаь так
[blitz]
mesh=loadanimmesh("Body.b3d")
walk=loadanimseq("walk.b3d")
idle=loadanimseq("idle.b3d")
[/blitz]
собсно mesh будет указателем на модель и файл модели должен содежать сетку объекта и кости, два других файла должны содержать кости и их анимацию (моделлеры, поправьте если не так).
walk и idle содержат номер секвенции анимации для хотьбы и простоя соответственно

mudriy 10.12.2006 21:40

Re: необходим совет
 
Понятно... спасибо, но наверное легче переменную на разные виды анимаций завести, тогда и команду animate один раз использовать придется...
еще вопр ("вопросы, вопросы требуют ответов"): можно ли из блица на модель (3ds), положить текстуру или задать ей цвет (entitytexture и entitycolor - не работают)?

HolyDel 11.12.2006 01:56

Re: необходим совет
 
предыдушее сообщение было посвящено b3d моделям.;)

посмотри здесь, для задания цвета анимированной модели, для текстурирования анимированной модели придеццо поменять одну строчку ;)
http://www.boolean.name/showthread.php?t=2073 ;)

mudriy 11.12.2006 10:49

Re: необходим совет
 
ясно... пока все...

mudriy 19.12.2006 02:44

Re: необходим совет
 
Снова вопрос...
когда смотрел хелп (не помню какой, но он точно был на русском), заметил одну команду (ее название, собственно, я и хочу спросить)... она очищает буфер (что ли?) нажатых клавиш...
Если кто помнит и хочет подсказать, жду ответ...

HolyDel 19.12.2006 02:53

Re: необходим совет
 
FlushKeys()

mudriy 19.12.2006 07:23

Re: необходим совет
 
Спасибо, выручил...


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot