|
3D-программирование Вопросы, касающиеся программирования 3D мира |
28.10.2009, 22:12
|
#1
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Проблема с анимацией
Проблема в том что блиц придирается к программе:короче когда я стреляю в фрица, падают либо все,либо никто вобще не падает,либо творится вобще чтото непонятное!Помогите плиз,в чем проблема???
AppTitle ("")
Include "Libs\lib1.dll"
Include "Libs\lib.dll"
Global health% = 100
Global file1
Global file2
Global file3
Global map1
Global m ;skybox
Global i
Global time#
Global sound1 = LoadSound("Sounds\walk1.wav")
Global sound2 = LoadSound("Sounds\walk2.wav")
Global sound3 = Load3DSound("Sounds\die.wav")
Global sound4 = Load3DSound("Sounds\enemydie.wav")
Global sound5 = Load3DSound("Sounds\alert.wav")
Global sound6 = LoadSound("Sounds\echo.wav")
Global sound7 = LoadSound("Sounds\reload.wav")
Global sound8 = LoadSound("Sounds\gun_wall.wav")
Global main_sound = LoadSound("Sounds\intro.wav")
Global cursor = LoadImage("Images\cursor.bmp")
Global menu_image = LoadImage("Images\1024x768.bmp")
Type flare
Field x#,y#,z#
Field entity
Field cylinder
Field light
End Type
Type shot
Field x#,y#,z#
Field entity1
Field magazine%
Field bullets%
Field dist#
End Type
Type friz
Field x#,y#,z#
Field entity
Field status
Field enemybox
Field sphere1,sphere2
Field health%
End Type
Dim abc.friz(50)
Global num% = 0
file1 = OpenFile("Config\config1.ini")
io_result = ReadLine(file1)
If io_result = 1 Then Graphics3D 1600,900,32,1
If io_result = 2 Then Graphics3D 1280,768,32,1
If io_result = 3 Then Graphics3D 1024,768,32,1
If io_result = 4 Then Graphics3D 640,480,32,1
SetBuffer BackBuffer()
Global texture1 = LoadTexture("data\models\media\mymp5.bmp")
Global texture4 = LoadTexture("Textures1\brick\algaebricks.jpg")
Global texture5 = LoadTexture("Textures1\lamps\lamp1.jpg")
Global user
Global camera
Global x# = 0
Global bullet = LoadSprite("images\bullet.bmp")
Global weapon = LoadAnimMesh("Data\Models\media\mp5.b3d",camera);camera
Const user_type = 1
Const ground_type = 2
Const shot_type = 3
Const friz_type = 4
Function create_weapon()
ExtractAnimSeq(weapon,1,1 )
ExtractAnimSeq(weapon,2,8 )
TurnEntity weapon,0,90,0
ScaleEntity weapon,0.1,0.1,0.1
PositionEntity weapon,-7,9,5
EntityOrder weapon,-1
EntityTexture weapon,texture1
End Function
Function create_friz(x#,y#,z#,dist#)
num% = num%+1
abc(num) = New friz
abc(num)\x# = x#
abc(num)\y# = y#
abc(num)\z# = z#
;=========================ENTITYES=====================================
abc(num)\entity = LoadAnimMesh("Data\Models\Media\Officer.b3d")
abc(num)\enemybox = CreateSphere()
abc(num)\sphere1 = CreateSphere()
abc(num)\sphere2 = CreateSphere()
;=========================ENTITYES OPERATIONS=========================
RotateEntity abc(num)\enemybox,0,90,0
EntityType abc(num)\enemybox,friz_type
ScaleEntity abc(num)\enemybox,0.1,0.25,0.09
ScaleEntity abc(num)\sphere1,0.01,0.01,0.01
ScaleEntity abc(num)\sphere2,0.01,0.01,0.01
EntityAlpha abc(num)\enemybox,0.0001
EntityAlpha abc(num)\sphere1,0.0001
EntityAlpha abc(num)\sphere2,0.0001
PositionEntity abc(num)\enemybox,x#,y#+0.3,z#
PositionEntity abc(num)\entity,x#,y#,z#
ScaleEntity abc(num)\entity,0.0075,0.0075,0.0075
PositionEntity abc(num)\sphere1,EntityX(abc(num)\enemybox),EntityY(abc(num)\enemybox),EntityZ(abc(num)\enemybox)
PositionEntity abc(num)\sphere2,EntityX(abc(num)\enemybox),EntityY(abc(num)\enemybox),EntityZ(abc(num)\enemybox)+dist#
;=========================EXTRACT ANIM SEQ============================
ExtractAnimSeq(abc(num)\entity,1,32 ) ; 1- idle
ExtractAnimSeq(abc(num)\entity,33,83 ) ; 2- look_around
ExtractAnimSeq(abc(num)\entity,84,117 ) ; 3- walk
ExtractAnimSeq(abc(num)\entity,118,134 ) ; 4- run
ExtractAnimSeq(abc(num)\entity,135,150 ) ; 5- arm
ExtractAnimSeq(abc(num)\entity,150,159 ) ; 6- shoot_forward
ExtractAnimSeq(abc(num)\entity,161,181 ) ; 7- disarm
ExtractAnimSeq(abc(num)\entity,182,197 ) ; 8- shoot_down
ExtractAnimSeq(abc(num)\entity,198,213 ) ; 9- shoot_up
ExtractAnimSeq(abc(num)\entity,214,239 ) ; 10- reload
ExtractAnimSeq(abc(num)\entity,240,270 ) ; 11- die1
ExtractAnimSeq(abc(num)\entity,271,311 ) ; 12- die2
ExtractAnimSeq(abc(num)\entity,312,325 ) ; 13- die3
;======================================================================
Animate abc(num)\entity,1,0.7,1
;abc(num)\status = 0
abc(num)\health% = 100
End Function
Function update_friz()
For i = 1 To num
EntityParent abc(i)\enemybox,abc(i)\entity
;=========================FREE - WALKING FRIZ===========================
If (180 - Abs(-DeltaYaw(abc(i)\enemybox,user)+100)) < 70 And (abc(i)\health%>0) And EntityDistance(abc(i)\entity,user)<20 And EntityVisible(abc(i)\enemybox,user) Then
abc(i)\status = 1
EndIf
;If abc(i)\health% < 0 Then
;abc(i)\status = 2
;EndIf
If abc(i)\status = 0 Then
MoveEntity abc(i)\entity,0,0,-0.035
If EntityDistance(abc(i)\entity,abc(i)\sphere2)<1 Then pointer(abc(i)\entity,abc(i)\sphere1)
If EntityDistance(abc(i)\entity,abc(i)\sphere1)<1 Then pointer(abc(i)\entity,abc(i)\sphere2)
If AnimTime(abc(i)\entity)>30.8 Then
Animate abc(i)\entity,1,1,3
EndIf
ElseIf abc(i)\status = 1 Then
pointer(abc(i)\entity,user)
If AnimTime(abc(i)\entity)>13 Then
Animate abc(i)\entity,1,1.4,6
EmitSound sound5,abc(i)\entity
EndIf
ElseIf abc(i)\status = 2 Then
If AnimTime(abc(i)\entity)>30.8 Then
;res = Rnd(11,12)
Animate abc(i)\entity,3,0.9,11
EndIf
EndIf
Next
End Function
Function create_world()
map1 = loadcsm("level1.csm","Textures\",ground_type)
ScaleEntity map1,0.004,0.004,0.004
PositionEntity map1,0,0,0
create_user()
skybox()
create_weapon()
CreateListener(user,1,1,20)
;================================CREATE FLARES==================================
create_flare(0,1.75,1)
create_flare(-3.5,1.75,1)
create_flare(-6,1.75,-2)
create_flare(-6,1.75,2)
create_flare(0,1.75,-3)
create_flare(0,1.75,5)
create_flare(4,1.75,5)
create_flare(-6,1.75,5)
create_flare(-6,1.75,-4.3)
;================================CREATE FRIZ======================================
create_friz(0,-0.52,0,6)
create_friz(-3,-0.52,-2,5)
;==================================================================================
End Function
Function jump()
If (x#=0)Or(x#=0.03)Then
x#=-0.3
EndIf
End Function
Function create_shot(x#,y#,z#)
a.shot = New shot
PlaySound sound8
a\x# = x#
a\y# = y#
a\z# = z#
a\entity1 = LoadSprite("images\bullet.bmp")
a\dist# = 100
EntityAlpha a\entity1,0.0001
ScaleSprite a\entity1,0.001,0.001
PositionEntity a\entity1,x#,y#,z#
TurnEntity a\entity1,EntityPitch(camera),EntityYaw(user),0
EntityType a\entity1,shot_type
EntityPickMode a\entity1,1
EntityRadius a\entity1,0.001
Return True
End Function
Function create_flare(x#,y#,z#)
a.flare = New flare
a\entity = LoadSprite("Images\flare.bmp")
ScaleSprite a\entity,0.4,0.4
PositionEntity a\entity,x#,y#,z#
a\cylinder = CreateCylinder(32)
ScaleEntity a\cylinder,0.1,0.05,0.1
PositionEntity a\cylinder,x#,y#+0.1,z#
EntityTexture a\cylinder,texture5
End Function
Function pointer(e1,e2)
x1 = EntityPitch(e1,1)
z1 = EntityRoll(e1,1)
PointEntity e1,e2
RotateEntity e1,x1,EntityYaw(e1)-180,z1
End Function
Function create_user()
user = CreateSphere()
camera = CreateCamera(user)
CameraFogMode camera,0
CameraFogColor camera,192,192,192
CameraFogRange camera,1,50
EntityRadius user,0.5
EntityOrder user,map1
file2 = OpenFile ("Config\Config2.ini")
io_result1 = ReadLine(file2)
If io_result1 = "1" Then CameraRange camera,0.1,1000
If io_result1 = "2" Then CameraRange camera,0.1,100000
If io_result1 = "3" Then CameraRange camera,0.1,1000000
PositionEntity user,-7,10,3;-7,10,3
health% = 100
EntityType user,user_type
Collisions user_type,ground_type,2,3
End Function
Function reload()
PlaySound sound7
End Function
Function alert(file$,cur_t)
alert_font1 = LoadFont("Courier",30,1,1,0)
SetFont alert_font1
kdv = OpenFile(file$)
result$ = ReadLine(kdv)
If time<cur_t
time=time+1
Color 0,0,0
Rect 0,GraphicsHeight()-100,GraphicsWidth(),GraphicsHeight()
Color 255,0,0
Text 10,GraphicsHeight()-70,result$
EndIf
CloseFile(kdv)
FreeFont alert_font1
End Function
Function update_user()
v# = 0.15
u# = 80
EntityParent weapon,camera
TurnEntity camera,MouseYSpeed()/2,0,0
TurnEntity user,0,-MouseXSpeed()/2,0
If KeyHit(3) Then SaveBuffer(BackBuffer(),"Screenshots\Screenshot.bmp")
If KeyDown(17) Then MoveEntity user,0,0,v#
If KeyDown(30) Then MoveEntity user,-v#,0,0
If KeyDown(32) Then MoveEntity user,v#,0,0
If KeyDown(31) Then MoveEntity user,0,0,-v#
If KeyHit(19) Then reload()
If MouseDown(1) Then
create_shot(EntityX(user),EntityY(user),EntityZ(user))
If AnimTime(weapon)>5
Animate weapon,1,15,2
EndIf
EndIf
If Not MouseDown(1) Then Animate weapon,1,1,1,1
If KeyDown(57) Then jump()
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
If Abs(EntityPitch#(camera))>u# RotateEntity camera,u#*Sgn(EntityPitch#(camera)),0,0
End Function
create_world()
x#=0
While Not KeyHit(1)
Collisions shot_type,friz_type,2,1
HideEntity bullet
update_user()
update_shot()
update_friz()
If Not EntityCollided(user,ground_type) Then
x# = x#+0.03
Else
x# = 0
EndIf
TranslateEntity user,0,-x#,0
UpdateWorld
RenderWorld
;alert("Data\dialogs\auto\dialog1.kdv",100)
Color 255,0,0
Plot MouseX(),MouseY()
Collisions user_type,friz_type,2,3
Text 10,10,num%
Flip
Wend
EndGraphics()
End
Function update_shot()
For z.shot = Each shot
For i = 1 To num
EntityOrder z\entity1,-1
MoveEntity z\entity1,0,0,5
z\dist#=z\dist#-1
If z\dist#<0 Then
FreeEntity z\entity1
Delete z
ElseIf EntityCollided(z\entity1friz_type) Then
abc(i)\health% = -1
abc(i)\status = 2
EndIf
Next
Next
End Function
|
(Offline)
|
|
28.10.2009, 23:51
|
#2
|
Бывалый
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений (для 858 пользователей)
|
Ответ: Проблема с анимацией
блиц придирается к программе:
|
ошибка компиляции?
А мы стрелять в пустоту не умеем =)
падают либо все,либо никто вобще не падает
|
Гравитация непредсказуема...
,либо творится вобще чтото непонятное!Помогите плиз,в чем проблема???
|
Проблема в коллизиях или пиках или реализация хромает, проще говоря проблема в большой программе.
|
(Offline)
|
|
29.10.2009, 00:19
|
#3
|
ПроЭктировщик
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений (для 53 пользователей)
|
Ответ: Проблема с анимацией
Да либо пики с коллизиями, либо в типах с жизнями ботов чего то намутил, Язык программирования непредсказуем если не знаеч чего программишь и хочеш получить, ты же этот код писал? Попробуй потестить отдельные функции, а потом сюда ес что то конкретное, уже не первый раз пишу то что некто за тебя груду кода разбирать не захочет=/
|
(Offline)
|
|
29.10.2009, 01:03
|
#4
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Проблема с анимацией
можно медию ?
|
(Offline)
|
|
29.10.2009, 14:55
|
#5
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Проблема с анимацией
Сообщение от pinqin
ошибка компиляции?
А мы стрелять в пустоту не умеем =)
Гравитация непредсказуема...
Проблема в коллизиях или пиках или реализация хромает, проще говоря проблема в большой программе.
|
а может там чето с типами?может там какая то хрень?может ктото глянуть,а то я уже этот код ТРИ МЕСЯЦА талдычу,нифига проблемы найти не могу!
|
(Offline)
|
|
29.10.2009, 21:22
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Проблема с анимацией
Include "Libs\lib1.dll"
Include "Libs\lib.dll"
|
а что это ты инклудишь если не секрет ??
|
(Offline)
|
|
29.10.2009, 22:17
|
#7
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Проблема с анимацией
та то для прикола..."а ля " дээльль =)
ну так что там с типами?а то я уже не знаю че делать...
|
(Offline)
|
|
04.11.2009, 17:30
|
#8
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Проблема с анимацией
а может такое быть что это все не ошибка,а проделки паганого блица?может если его скомпилирвать на другом компе,то норм.будет?
|
(Offline)
|
|
04.11.2009, 17:32
|
#9
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Проблема с анимацией
нет, ошибка в твоем коде !! ищи ее !!
|
(Offline)
|
|
04.11.2009, 17:32
|
#10
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Проблема с анимацией
та я уже искал...помогите блин! =(
|
(Offline)
|
|
04.11.2009, 17:38
|
#11
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Проблема с анимацией
можно медию ?
|
(Offline)
|
|
04.11.2009, 17:45
|
#12
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Проблема с анимацией
Помоги себе сам! Запусти дебагер!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.11.2009, 18:10
|
#13
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Проблема с анимацией
Тебя просят дать медию, может наконец то выставишь. Может тогда твоя трехмесячная проблема будет решена. Не бойся, красть краденое никто не собирается.
|
(Offline)
|
|
04.11.2009, 18:19
|
#14
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Проблема с анимацией
Сообщение от hgang
Тебя просят дать медию, может наконец то выставишь. Может тогда твоя трехмесячная проблема будет решена. Не бойся, красть краденое никто не собирается.
|
та блин интернет медленный...лан,седня попробую выложить...
|
(Offline)
|
|
04.11.2009, 20:33
|
#15
|
Элита
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений (для 3,923 пользователей)
|
Ответ: Проблема с анимацией
Возникла проблема
Есть заскиненая модель. К ней я отдельными файлами готовлю анимацию (ходьба, бег и т.п.)
Заметил, что если в анимации в течении всего времени не двигать кость, то эта кость сохраняет свое местоположение от предыдущей анимации. То есть анимации как бы смешиваются.
Если запустить анимацию ходьбы, а затем анимацию, где кости не двигаются, но расставлены так, что модель деформируется, то после запуска кости остаются такими, как если бы это была анимация ходьбы, как будто блитц или b3d экспортер игнорирует кости, которые не двигаются.
А мне хотелось бы, чтобы анимации не смешивались.
Мм, сложно объяснять, нажеюсь поймете. Может проблема в коде?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:15.
|