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

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

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

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

Ответ
 
Опции темы
Старый 09.08.2007, 20:18   #76
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

MoKa, я тут по форуму прогулялся... 30% твоих постов ваща не понял. Так что не грузи .))
(Offline)
 
Ответить с цитированием
Старый 09.08.2007, 20:24   #77
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

У меня тут вопросик возник... даже наверно вопросище!.) Начал делать ботов... ну ботами их тяжело назвать, но все же. Это камикадзе. Они летят прямяком в тебя.. думал как такое реализовать... пока нашел одну подходящую функцию (DeltaYaw). С помошью нее направляю ботов на себя, и задаю им скорость... НО! если поварачиваю себя, начинаются какието странные телодвижения... Вот для наглядности малость модифицированый пример из хелпа:
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

camera=CreateCamera()

; Make camera orthagraphic for flat, 2D view
CameraProjMode camera,2

; Position and rotate camera so we have overhead (top-down) view
PositionEntity camera,0,5,0
RotateEntity camera,90,0,0

; Create red cone (the arrow)
arrow=CreateCone()
RotateMesh arrow,90,180,0
ScaleMesh arrow,.1,.1,.2
EntityColor arrow,255,0,0

; Create blue sphere (the spot)
spot=CreateCone()
RotateMesh spot,90,180,0
ScaleMesh spot,.1,.1,.1
EntityColor spot,0,0,255

While Not KeyDown(1)

    ; If w,a,s,d pressed then move spot
    If KeyDown(31) Then MoveEntity spot,0,0,0.01 ; w - up
    If KeyDown(30) Then TurnEntity spot,0,2,0 ; a - left
    If KeyDown(17) Then MoveEntity spot,0,0,-0.01 ; s - down
    If KeyDown(32) Then TurnEntity spot,0,-2,0 ; d - right


    ; Rotate arrow using delta yaw value. Arrow will point at spot.
    RotateEntity arrow,0,-DeltaYaw#(spot,arrow),0

    RenderWorld

    Text 0,0,"Note: Camera view is overhead. The arrow will y-rotate using DeltaYaw value."
    Text 0,20,"Use w,a,s,d to move spot."
    Text 0,40,"Delta yaw: "+DeltaYaw#(spot,arrow)

    Flip
    Wend

End
(Offline)
 
Ответить с цитированием
Старый 09.08.2007, 20:56   #78
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Анимация (и еще пару вопросов)

MoKa, я тут по форуму прогулялся... 30% твоих постов ваща не понял. Так что не грузи .))
Так лучше?
Type TFile
   Field FileName$
   Field File
   Field LLevel%
End Type

Function aLoadTexture(File$,Flag%=1)
   For f.TFile=Each TFile
      If f\FileName=File
         f\LLevel=True
         Return f\File
      EndIf
   Next
   f.TFile=New TFile
   f\FileName=File
   f\File=LoadTexture(File,Flag)
   f\LLevel=True
   Return f\File
End Function

For f.TFile=Each TFile
   If f\LLevel=False
      Select EntityClass(f\File)
         Case "Texture"
            FreeTexture f\File
         Case "Mesh"
            FreeEntity f\File
      End Select
      Delete f
   EndIf
Next
Насчёт DeltaYaw, хз, но она мне не нравиться, поэтому я написал маленькую функцию которая складывает 2 угла процентно:
Function MergeAngles#(Angle1#,Angle2#,Morph#=.5)
	If Abs(Angle1-Angle2)>180
		If Angle1<Angle2
			Return Angle1-((360-Angle2)+Angle1)*(.5-(Morph-.5))
		Else
			Return Angle2-((360-Angle1)+Angle2)*(.5+(Morph-.5))
		EndIf
	Else
		Return Angle1*(Morph)+Angle2*(1.0-Morph)
	EndIf
End Function
Можешь её заюзать, и никаких проблемм не будет, и плавный поворот будет.
(Offline)
 
Ответить с цитированием
Старый 09.08.2007, 21:33   #79
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

MoKa, ого. огромное спасибо, разъяснил Токо это надо половину кода переписывать... наверно пока оставлю все как есть.. заюзаю в следующем .))

А вот здесь (парень тыкает пальцем в монитор) хотелось бы дополнительных разъяснений... как сама функция играет я впринципе понял. А вот как ей воспользоваться . У меня все функции либо для создания чегонибудь, либо просто для сорачивания награмождений... а здесь что-то совсем другое дело... если я не ошибаюсь через нее должны проходить углы, на которые повернут управляемый объект? но как тогда узнать эти углы? и как вообще эту функцию применить?
(Offline)
 
Ответить с цитированием
Старый 09.08.2007, 21:45   #80
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Анимация (и еще пару вопросов)

Эта функция смешивает 2 угла, которые нужно ввести, на процентно, .5 - порону, если больше тогда второй угол будет больше задуйствован если меньше то первый.
Воспользоватья так:
Создай один пивот в загрузке, и заглобаль его. И затем перед тем как поворачивать делай так:
PositionEntity GPivot,EntityX(Player,1),EntityY(Player,1),EntityZ(Player,1)
PointEntity GPivot,Target
RotateEntity Player,0,MergeAngles(EntityYaw(Player),EntityYaw(GPivot),.1)
От сюда: GPivot это тот созданный пивот, Player - то что повернуть, Target На то что повернуть. Последний параметр, если делать меньше, будет Ещё плавнее, Если делать Больше, тогда будет быстрее поворачивать.
(Offline)
 
Ответить с цитированием
Старый 09.08.2007, 22:51   #81
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
MoKa, огромное спасибо. все работает .)) только мы поварачиваем не Player а target... и там еще 0 забыл

что такое? ниче у меня не получается . почему нельзя проверить дистанцию между кучей объектов одного списка с кучей объектов другого списка? Во всяком случае нельзя моим способом.
Я сначало обращаюсь к одному списку, внутри него обращаюсь к другому, а внутри этого безобразия проверяю ЕнтитиДистанс. Он ругается, что Ентити Даз Нот Экзист:
For k.kami=Each kami
For w.walls=Each walls
If EntityDistance (k\modeli,w\model)<4 Then
FreeEntity k\modeli
EndIf
Next
Next
Почему нельзя так делать? Я что какие-то правила нарушаю?

ЗЫ: а почему на сайте календарь начинается с Воскресения?
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 02:12   #82
jimon
 
Сообщений: n/a
Re: Анимация (и еще пару вопросов)


Maestro
обычно первый день недели в других странах ето воскресенье
(точно знаю что в англии, поетому по идее в европе и сша тоже)


Maestro
у тебя в таком случае будет потом проверка с пустой моделью что собсно вызывает ошибку ...
 
Ответить с цитированием
Старый 10.08.2007, 11:32   #83
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

jimon, точно, как же я раньше не заметил. Спасибо.
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 17:19   #84
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

Эммм... а как тогда мжно удалить? Я пытался сделать ХайдЕнтити, но это всеравно что задать альфу: предмет просто становится прозрачным, но продолжает взаимодействовать... может можно как-то отыскать все захайденые объекты и удалить их?
Или как-то присвоить индефикатор моделям, которые столкнулись, а потом найти их по этому индификатору?
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 17:23   #85
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Анимация (и еще пару вопросов)

Хм, вроде HideEntity отключает у него коллизию. Тогда делай просто так:
EntityType k\modeli,-1
HideEntity k\modeli
Ты просто поменяешь индекс коллизии, на тот который не коллизиться ни с чем, а потом при необходимости обратно меняй на нужный и всё
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 17:35   #86
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

MoKa, все бы ничего, только у меня не коллизия... вот на всякий случай код: (кубики все изчезают, а звуки переодически звенят)

SetBuffer BackBuffer()

Type kami
 Field modeli
End Type
Type walls
 Field model
End Type

Global k.kami,w.walls

   boomSound=LoadSound("select.mp3")

cam=CreateCamera()
PositionEntity cam,0,60,0
TurnEntity cam,90,0,0

lit=CreateLight()
TurnEntity lit,70,70,0

pivot=CreatePivot()
createkami(10,50)
Createwalls(10,pivot,50)

Repeat

TurnEntity pivot,0,.5,0


 For k.kami=Each kami
  For w.walls=Each walls
   If EntityDistance (k\modeli,w\model)<4 Then
    HideEntity k\modeli
    PlaySound boomSound
;    FreeEntity k\modeli
   EndIf
  Next
 Next

 For k.kami=Each kami
      If KeyDown(31) Then MoveEntity k\modeli,0,0,.5
    If KeyDown(30) Then TurnEntity k\modeli,0,3,0
    If KeyDown(17) Then MoveEntity k\modeli,0,0,-.5
    If KeyDown(32) Then TurnEntity k\modeli,0,-3,0
 Next

UpdateWorld()
RenderWorld()

Flip
Until KeyHit(1)

Function CreateKami(kol,razbros)
 For i=1 To kol
  k.kami=New kami
  k\modeli=CreateCube()
    PositionEntity k\modeli,Rnd(-razbros,razbros),2,Rnd(-razbros,razbros)
  EntityColor k\modeli,0,200,200
 ScaleEntity k\modeli,2,1,2
  EntityRadius k\modeli,2.5
 Next
End Function

Function CreateWalls(tn,pivot$,razbros)
 For i=1 To tn
  w.walls=New walls
  w\model=CreateCube(pivot$)
      PositionEntity w\model,Rnd(-razbros,razbros),2,Rnd(-razbros,razbros)
  ScaleEntity w\model,2,1,2
  EntityColor w\model,200,200,0
  EntityParent w\model,pivot$
 Next
End Function
а вот то же самое в архиве (со звуком)
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 17:40   #87
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Анимация (и еще пару вопросов)

Тогда всё просто:
- Добавь в класс kami "Field Hiden"
- Когда прячешь объект, помечай ему k\Hiden=True
- Далее, если k\Hiden=False тогда проверять на расстояние.
(Offline)
 
Ответить с цитированием
Старый 10.08.2007, 17:56   #88
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

хм. надо же. работает .)) Ну теперь только взрывы сделать осталось.. и будет демка
(Offline)
 
Ответить с цитированием
Старый 13.08.2007, 02:13   #89
Maestro
ПроЭктировщик
 
Регистрация: 25.07.2007
Сообщений: 151
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Анимация (и еще пару вопросов)

никак не могу сделать нармальные взрывы. Одно дело для одной модели... и совсем другое для списка... вобщем вот примерчик. помогите пожалуйста, если не кодом, то хотябы едеей.
(Offline)
 
Ответить с цитированием
Старый 13.08.2007, 12:36   #90
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Анимация (и еще пару вопросов)

Взрывы, делаю партиклами двух видов:
1. Потухающие.
2. Движущиеся.
1 - Обновляю таким образом, чтобы создать эффект затухания, а при маленькой жизни и большом размере, эффект вспышки.
2 - Это то что отлетает, обычно обыкновенные спарки, и чуток побольше, но слабее отлитают это огненные клубочки. А так-же этот же класс использую для клубов дыма.

Создай Классы, для каждого создай функцию Создания партикла, и функцию Обновления, где будет перебор всех и обновление каждого, а так-же по истечению жизни удаление.

Так же но это уже после, создай Эмитеры, это простой класс с пивотом и параметрами, которые наследуются партиклами. Это будет Источник, который можно будет привязывать к объектам и он будет выделять партиклы.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пару вопросов DIMMON4IK Основной форум 9 25.08.2009 18:53
Пару вопросов о 3ds max G.A.D 3D Моделирование 12 26.07.2009 22:41
Пару вопросов по Букам ЛысыЙ_Чук-Иванчук Болтовня 26 28.08.2007 21:33
Пару вопросов XpycT Blitz3D 6 14.11.2006 02:23


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


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