forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   помогите с выстрелом в объекты (http://forum.boolean.name/showthread.php?t=11399)

shyrikkk 11.12.2009 01:54

помогите с выстрелом в объекты
 
Хотел попросить знающих программистов .
Я создал обьект который стреляет шариком по кубику .
Хотел попросить как сделать чтобы исчез и кубик и шарик при столкновении (при выстреле) ,и чтоб на месте стокновения был небольшой эффект взрыва (самого простого )

вот пример :
Graphics3D 640,480,32,2
SetBuffer BackBuffer()

shar=CreateSphere() ; - создаём шар
HideEntity shar ;- скрываем шар

player=CreateCube() ;- создаём куб(игрока)

cam=CreateCamera() ;-создаём камеру
PositionEntity cam,0,3,-15 ;- позиция камеры
EntityParent cam , player ;- привязка камеры с зади игрока

lit=CreateLight() ;- свет
Type Dude
Field entity
End Type

stena=CreateCube () ;- создаём обьект (СТЕНА)
PositionEntity stena , 0 ,0 ,50

Repeat

For d.Dude=Each Dude
MoveEntity d\entity,0,0,2
If EntityDistance(cam,d\entity)>150 ;- если при выстреле шарик улетает
FreeEntity d\entity ;- за 150 ,то он удаляеться с
Delete d ;- поверхности и из памяти
EndIf
Next

For d.Dude=Each Dude ;- если при выстреле шарик сталкиваеться
MoveEntity d\entity,0,0,1.1 ;- с кубиком(СТЕНА) , то шарик ищезает
If EntityDistance (d\entity,stena)<5 ;- с поверхности и из памяти
FreeEntity d\entity
Delete d
EndIf
Next

If MouseHit(1) ; - нажатие мыше при выстреле

d.Dude=New Dude ; - создаём копии шариков
d\entity=CopyEntity( shar )
PositionEntity d\entity,EntityX#(player,1),EntityY#(player),Entit yZ#(player,1) ;- привязка

EndIf ;- шариков кубика и камеры

If KeyDown(200) MoveEntity player,0,0,1 ;- управление
If KeyDown(208 ) MoveEntity player,0,0,-1
If KeyDown(203) MoveEntity player,-1,0,0
If KeyDown(205) MoveEntity player,1,0,0

RenderWorld
UpdateWorld

Flip
Until KeyHit(1)

End

Reizel 11.12.2009 07:31

Ответ: помогите с выстрелом в объекты
 
Ээх ребят, я чуть чуть поугорал над кодом))))
Shyrikk, во первых, делать два цикла For D.Dude не обязательно, достаточно лишь один раз пройтись по ним, и поставить три условия - улетел "за 150", врезался в стену, и врезался в другого чувака.
Вот смотри:

[code=blitzbasic]
For d.Dude=Each Dude
Death=false ;Довольно важный момент
MoveEntity d\entity,0,0,2
;первое условие - расстояние от камеры
If EntityDistance(cam,d\entity)>150 then Death=true
If EntityDistance (d\entity,stena)<5 then Death=true
For D_.dude =each dude ; Переменная D_, чтоб игрока не путать с другими
If D_<>D and entitydistance(D_\entity,D\entity)<5 then
Death=true
;Сдесь создаешь взрыв от шарика
exit
endif
next
If DEATH then
FreeEntity D\entity
Delete D
EndIf
Next

[/code]

is.SarCasm 11.12.2009 14:44

Ответ: помогите с выстрелом в объекты
 
Дам совет почаще заходи сюда
а в твоем случае сюда

shyrikkk 11.12.2009 17:56

Ответ: помогите с выстрелом в объекты
 
Цитата:

Сообщение от Павел (Сообщение 129087)
Ээх ребят, я чуть чуть поугорал над кодом))))
Shyrikk, во первых, делать два цикла For D.Dude не обязательно, достаточно лишь один раз пройтись по ним, и поставить три условия - улетел "за 150", врезался в стену, и врезался в другого чувака.
Вот смотри:

[code=blitzbasic]
For d.Dude=Each Dude
Death=false ;Довольно важный момент
MoveEntity d\entity,0,0,2
;первое условие - расстояние от камеры
If EntityDistance(cam,d\entity)>150 then Death=true
If EntityDistance (d\entity,stena)<5 then Death=true
For D_.dude =each dude ; Переменная D_, чтоб игрока не путать с другими
If D_<>D and entitydistance(D_\entity,D\entity)<5 then
Death=true
;Сдесь создаешь взрыв от шарика
exit
endif
next
If DEATH then
FreeEntity D\entity
Delete D
EndIf
Next

[/code]

Павел спасибо за то что откликнулся !
Я вставил твой код за место моего ,но нащёт удаления самого кубика(стены) неполучаеться как только не пробовать сам я доробатовать программу .

shyrikkk 11.12.2009 21:39

кто поможет с выстрелом в объекты
 
Мама дорогая а как сделать что б кубик ищез (стена)
Не получаеться у меня ,уже пот на клавиатуру капает !!!
Я весь в мыле от печатания на битце .

НАРОД !!! кто нибудь подскажите как сделать что б обьект удалился в моём примере .

:SOS: :SOS: :SOS: :SOS: :SOS: :( :( :( :(

Taugeshtu 11.12.2009 21:48

Ответ: помогите с выстрелом в объекты
 
Подсказываю:
FreeEntity. Какое такое entity надо free - думай сам, мозги упражнять полезно.
//Раздача удочек окончена, рыбы сегодня нет.

is.SarCasm 11.12.2009 22:29

Ответ: помогите с выстрелом в объекты
 
мне лень долго вникать в код) ну примерно так:
Цитата:

If *твое условие(расстояние или сталкновение)* Then
FreeEntity d\entity : Delete d
Endif
Так если я не ошибаюсь.

shyrikkk 11.12.2009 23:36

Ответ: помогите с выстрелом в объекты
 
Цитата:

Сообщение от Igorian (Сообщение 129214)
мне лень долго вникать в код) ну примерно так:

Так если я не ошибаюсь.

про этот код который ты написал я знаю как начал изучать BLITZ
дело втом что у меня шарик - это переменная (на шарик можно сделать что б он ищезал)
а вот стена это обьект один и его просто так командной FreeEntity не удолишь , выводит сообщение и прирывает программу и из памяти этот обьект не удоляеться .

ПЛАЧУ :''(( :''(( :''(( :''(( :''(( :''(( :''((

Артем Валерьевич 15.12.2009 19:38

Ответ: помогите с выстрелом в объекты
 
Напиши тоже самое, как для шарика, со стеной, и потом проходись по типам стены и шарика и удаляй то что тебе нужно

Reizel 17.12.2009 17:34

Ответ: помогите с выстрелом в объекты
 
Шурик, первый урок: Не используй для таких целей обычные переменные. Юзай одну очень хорошую вещь: ТИПЫ. Создаешь тип Global_, и туда уже пихай свои глобальные переменные, в данном сучае ссылку на стену. Потом , делай условие не столкнулся ли шарик со стеной??? Если да, то :
1) Ищем в Global_ нашу стену. Удоляем ее. Выгружаем ссылку на стену из памяти(Delete [ссылка]). все. ее больше не будет в памяи и обратиться к ней не сможешь. И проверка на Null тебе в помощь:):) ЗЫ для незнающих: Null - объект, который не существует:):)

Colossus 16.01.2010 20:29

Ответ: помогите с выстрелом в объекты
 
может и не в тему, а как можно замутить такую же фигню если вместо шарика модель пули? ну и чтобы на месте столкновения появлялась деколь от выстрела

Reizel 16.01.2010 22:35

Ответ: помогите с выстрелом в объекты
 
Colossus,если модель пули небольшая - то это маразм. Спрайты forever. А вообще модель пули или шарика - только по форме отличаются, ну и участком памяти:)

shyrikkk 17.01.2010 20:26

мощный вопрос !!!!!!!!!!!!!!!!!!!!!!!!!
 
У МЕНЯ сверх мощный вопрос !!! он немного по текстурам и строению !!!
много видел в играх разных, огромные дырки в кирпичных стенах,
или всякие руины из кирпича - !!!
МАЛЕНЬКИЙ вопрос как так сделано ???
ИЛИ как нанести текстуры на стенку что ббыли видны в дырке обломки кирпича !!!???????????

Reizel 17.01.2010 22:17

Ответ: помогите с выстрелом в объекты
 
не забивай голову подобными вещами :) Это сложно

Colossus 22.01.2010 14:22

Ответ: помогите с выстрелом в объекты
 
ну вот допустим как мне зафиксировать коллизию пули с ботом? бот идет как аниммешь а коллизии у него чото стремные... вот как мне замутить всю это баньку?


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

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