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

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

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

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

Ответ
 
Опции темы
Старый 22.09.2005, 10:51   #1
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Стрелка

Вот код:
If EntityCollided( car,TWALL)
sp1=LoadSprite("img\1.bmp")
SpriteViewMode sp1,1
Else
EndIf
И так, спрайт подгружаеться и при столкновении со стеной, появляеться в начале трассы, а как сделать, чтобы он появлялся возле машинки, со стороны столкновения и когда столкновение прекращалось, то и спрайт выключался так сказать. По поводу привязки знаю, что скорее всего надо привязывать к машине, но когда пишу вот такую строчку:
sp1=LoadSprite("img\1.bmp")(car)
то выдает ошибку, Expectid ENDIF а зачем он там я не понимаю, а уж темболее в какой части он учзусешв
Кто может помочь?
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 11:32   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
1. Каждый раз грузить/удалять спрайт накладно.
Загрузи его при старте уровня и спрячь из виду командой HideEntity sp1

2. Привязку непрвавильно пишешь, вот и получаешь ошибку.
Родительский объект должен быть одним из параметров команды LoadSprite, а у тебя он сам по себе...

Попробуй так сделать EntityParent sp1,car (посмотри в хелпе про эту команду, я мог че-нить перепутать)
Этим ты привяжешь спрайт к машине. Теперь ставишь его в нужное место относительно машины командой PositionEntity sp1,x,y,z

там, где проверка на столкновение, делаешь спрайт видимым

если (машина столкнулась со стенкой)
ShowEntity sp1
иначе
HideEntity sp1
конец_если
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 11:43   #3
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Спасибо, вот только проблема со стороной отображения спрайта осталась - если в правую стенку врезаюсь - все почти как надо(спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную), а вот если в левую стенку врезаюсь, то спрайт все равно с правой стороны отображаеться.
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 12:13   #4
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Пока Вы думаете над мои вопросом(изложен выше), я задам еще один
Вот код:
If KeyDown(208) 
If speed>0 Then 
  EntityParent sp2,car
  ShowEntity sp2
  SpriteViewMode sp2,1
  PositionEntity sp2,x,y,z
 	Else
  HideEntity sp2
  EndIf
If speed<0  Then 
  EntityParent sp3,car
  ShowEntity sp3
  SpriteViewMode sp3,1
  PositionEntity sp3,x,y,z
 	Else
  HideEntity sp3
  EndIf 
EndIf
Так вот вопрос, как сделать так чтобы ТОЛЬКО ПРИ нажатии на кнопку(20спрайты загорались, а то получаеться, что спрайт(sp2) у меня горит как только скорость >0

P.S. Не забудьте о вопросах:
1. со стороной отображения спрайта
2. спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 12:13   #5
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Точно не скажу как сделать(нет блитца под рукой), но есть команда LinePick, которая позволяет получить координаты, так вот делаешь ЛайнПик влево, вправо и вперед. Если команда вернула НЕ НОЛЬ, то она (точнее смежные ей команды) вернет и координаты пересечения воображаемого луча с объектом. Выводи спрайт в этих координатах. Тогда и привязка не нужна к машинке...
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 12:22   #6
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
Чесно говоря без примера не могу понять, мне лучше на примере показывать(не обязательно на моем коде), так я лучше понимаю(сам не знаю почему), так что буду ждать других ответов или когда у тебя Блиц окажеться под рукой
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 12:44   #7
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
До решения вопроса о нажатии на кнопку(20 я сам додумался (мечтал использовать этот смайл)
На всякий случай если кому-то интересно, вот ответ:
If KeyDown(208) 
If speed>0 Then 
  EntityParent sp2,car
  ShowEntity sp2
  SpriteViewMode sp2,1
  PositionEntity sp2,x,y,z
 	Else
  HideEntity sp2
  EndIf
If speed<0  Then 
  EntityParent sp3,car
  ShowEntity sp3
  SpriteViewMode sp3,1
  PositionEntity sp3,x,y,z
 	Else
  HideEntity sp3
  EndIf 
[B]Else 
HideEntity sp2
HideEntity sp3[/B]
EndIf
Но остаються в силе вопросы:
1. со стороной отображения спрайта
2. спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 14:43   #8
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Я написал пример про спрайт на стенке, смотри, должно помочь.
расширение файла необходимо ПЕРЕИМЕНОВАТЬ в RAR!

EntityParent sp2,car
SpriteViewMode sp2,1
PositionEntity sp2,x,y,z
Насколько я понял, эти параметры никогда не меняются, а по сему зови эти функции ТОЛЬКО при создании спрайтов!
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 17:37   #9
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Не поможет.
Вот нормальный код, найдите пару десятков отличий. А заодно замерьте во сколько раз повісилась производительность...
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

;ystanovka kolliziy
Const robotType = 1
Const levelType = 2
Const boxType = 3
Const cameraType = 4
Collisions robotType,levelType,2, 3
Collisions robotType,boxType,2, 2
Collisions cameraType,levelType,2, 3
Collisions cameraType,boxType,2, 2

;shrift pokrupnee
SetFont(LoadFont ("arial cyr",20))

;Sun
l = CreateLight(1)
RotateEntity l, 90, 0,0

;Level
level=CreatePlane ()
EntityColor level,0,0,200
PositionEntity level,0,-10,0
EntityType level,levelType

;Robo
robot = CreateCube ()
EntityColor robot,0,200,0
ScaleEntity robot,5,5,5
EntityRadius robot, 6
EntityType robot,robotType

;Camera
cam = CreateCamera(robot)
EntityRadius cam,5
EntityType cam,cameraType
CameraRange cam,0.01,2000;<<NEVER USE SUCH VALUES OR Z-Buffer WILL DIE! USE SOMETHING LIKE (0.1,1000)-MAXIMUM!
CameraFogColor cam, 0,128,255 
CameraFogRange cam, 1,1000
CameraClsColor cam,0,128,255;<<FOG COLOR WITHOUT BACKGROUND COLOR HAS NO REASON IN RESULT...

PositionEntity cam, 0, 5, 10

;bol'shoy kubik
cub1=CreateCube()
ScaleEntity cub1 ,1, 10, 100
PositionEntity cub1,25,5,-30
EntityType cub1,boxType
cub2=CopyEntity (cub1)
PositionEntity cub2,-25,5,-30
EntityType cub2,boxType

;iskry ot mashiny
spr1 = LoadSprite ("spr1.bmp")
SpriteViewMode spr1,2
RotateEntity spr1,0,180,90
ScaleSprite spr1,5,5
EntityFX spr1,17

FPSTimer=CreateTimer(60)

;------------------------------------------
;<<MAIN LOOP
While Not KeyHit(1)

;povorot kamery na robota
	PointEntity cam,robot
	
;dvigaem kamery
	If KeyDown(44) Then TranslateEntity cam,0,-0.5,0
	If KeyDown(45) Then TranslateEntity cam,0,0.5,0
	If KeyDown (46) Then MoveEntity cam,0,0,-1
	If KeyDown(47) Then MoveEntity cam,0,0,1
;dvigaem robota
	If KeyDown(208) Then MoveEntity robot,0,0,1
	If KeyDown (200) Then MoveEntity robot,0,0,-1
	If KeyDown (203) Then MoveEntity robot,1,0,0
	If KeyDown (205) Then MoveEntity robot,-1,0,0
;gravitaciya
	TranslateEntity robot,0,-1,0
	
;esli zadevaem steny, to risyem iskry
	For coll=1 To CountCollisions(Robot)
 If GetEntityType(CollisionEntity(Robot,coll))=boxType Then
 	px# = CollisionX(Robot,coll)
 	py# = CollisionY(Robot,coll)
 	pz# = CollisionZ(Robot,coll)
 	PositionEntity spr1,px#,py#,pz#
 	nx# = CollisionNX(Robot,coll)
 	ny# = CollisionNY(Robot,coll)
 	nz# = CollisionNZ(Robot,coll)
 	AlignToVector spr1,nx#,ny#,nz#,3
 	MoveEntity Spr1,0,0,0.1
 	EntityAlpha spr1,1;<<Hide/ShowEntity cmds is slowly- don't use it in loop
 Exit
 Else
 	EntityAlpha spr1,1
 EndIf
	Next
	
	UpdateWorld
	RenderWorld
	Flip(0)
	WaitTimer(FPSTimer)
Wend
End
P.S. Кстати, что делает эта тема в разделе "2Д-программирование" ?
(Offline)
 
Ответить с цитированием
Старый 22.09.2005, 19:14   #10
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Столкновения мешей со спрайтами можно посмотреть в FAQ - создаём свой FPS : Выстрелы (или аналогичную статью на blitzetc)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.09.2005, 11:01   #11
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Diplomat, спасибо за код (я не знал про GetEntityType, за нее и благодарю).
Насчет раздела мне тоже интересно.
(Offline)
 
Ответить с цитированием
Старый 23.09.2005, 11:46   #12
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Нема за що...
(Offline)
 
Ответить с цитированием
Старый 24.09.2005, 22:32   #13
Dizels
Нуждающийся
 
Регистрация: 18.09.2005
Сообщений: 58
Написано 0 полезных сообщений
(для 0 пользователей)
А может все таки поясните, а то я чего то не понял!
А тему суда поместил, потомучто спрайт - 2-D изображение.
(Offline)
 
Ответить с цитированием
Старый 24.09.2005, 22:37   #14
jimon
 
Сообщений: n/a
потомучто оно так и есть ето 2д чтука в 3д пространстве, тоесть плоскость в обьеме
 
Ответить с цитированием
Старый 26.09.2005, 06:58   #15
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
А тему суда поместил, потомучто спрайт - 2-D изображение.
Я думал, что все, что делается от лица Graphics3D - это по части 3д программирования независимо от содержания...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Столкновения Abiron Blitz3D 12 09.03.2009 18:48
Столкновения... Mark Castle 3D-программирование 12 18.02.2009 23:27
Столкновения butcher 3D-программирование 9 13.06.2007 17:55
Люди помогите.....Одолеть спрайт!!! johnk Болтовня 17 09.05.2007 16:23


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


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