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=11651)

Petrofan 04.01.2010 15:47

Взрыв (Вооомм)
 
Вложений: 1
Судя по названию темы вы догадались о чем пойдет речь. Хочу сделать взрыв бочек. Вчера вечером сел писать код. Хотел сделать универсальные функции чтобы можна было присобачить ее к любому обекту и когда но нему пальнуть он подрывается (я имею в виду обект с горючим), так вот невыходит чет у меня. С типами у меня по жызни проблеми, никак немогу разобратся с ними.Значит выложу пример того что я набросал. Может поможете :rolleyes:

ABTOMAT 04.01.2010 17:20

Ответ: Взрыв (Вооомм)
 
Код:

Function UpdateBarrels()
    If Pick>entity Then
        For b.Barrels=Each Barrels
           
            entity=Pick
            FreeEntity b\entity
            Delete b
            Exit
           
        ;EndIf
        ;EndIf
        Next
    EndIf
    If entity Then    UpdateExplodeBarrels(cam)
End Function

Это ппц бессмыслица. Объясни словами что ты хотел этим добиться. Удалить все бочки сразу?

Petrofan 04.01.2010 17:22

Ответ: Взрыв (Вооомм)
 
Ну типа если пикнут обект то подорвать его.

NitE 04.01.2010 17:35

Ответ: Взрыв (Вооомм)
 
сделай поле для нужного типа, типа (каламбурчик )))) IsExploding=1/0
и при апдейте смотри что должно взрыватся, а что нет.

ABTOMAT 04.01.2010 17:36

Ответ: Взрыв (Вооомм)
 
У тебя в UpdateExplodeBarrels взрывы происходят без всякой проверки на то, какой именно нужно взрывать. И зачем ты заранее создаёшь объекты ExplodeBarrels ?
По-хорошему, объект взрыва надо создавать в момент самого взрыва и тут же его активировать.
В-общем, надо полностью пересмотреть структуру

Petrofan 04.01.2010 17:42

Ответ: Взрыв (Вооомм)
 
Я просто неочень знаю как обращатся с типами и может в этом проблема может кто нить обяснить попреличней чтобы дать урок мне и другим пользователям которим это тоже непонятно. Паперед спасибо !

ABTOMAT 04.01.2010 17:55

Ответ: Взрыв (Вооомм)
 
http://forum.boolean.name/showthread.php?t=10
FAQ!

Petrofan 11.01.2010 13:52

Ответ: Взрыв (Вооомм)
 
Вложений: 1
Немного подумал, почитал топик, и вроде чтото получилось пришлось все переделать (Автомату большое спасибо !!!) Попробуйте посмотрите так ли я сделал или это через жопу:rolleyes:

ABTOMAT 11.01.2010 15:11

Ответ: Взрыв (Вооомм)
 
Цитата:

If o\aa#=1
PlaySound ddd
EndIf

If o\life#<1
EntityAlpha o\entity,0
o\aa#=o\aa#+1
EndIf
EntityTexture o\box,Boom,o\aa#
If o\aa#>23

FreeEntity o\entity
Delete o
EndIf
Вот это сунуть внутрь условия If Pick=o\entity
И в конце выходить из цикла exit'ом, когда уже всё что хотел с бочкой сделал.
И условие click=1 вынести за пределы перебора, т.е. чтобы перебор выполнялся только при клике, а не всё время. Всё равно же бочка не взорвётся если не кликают, а время процессора экономим.

Ну так, вроде всё, относительно нормально (главное что слава богу работает)
А вообще по-хорошему нужен класс barrel, у которого был бы метод blow, в котором бы уничтожалась бочка и создавался объект класса spark.
Тогда чтобы уничтожить бочку получаем простое и удобное
barrel b;
b->blow();
На блице без ООП было бы что-то типа:
b.barrel = CreateBarrel()
BarrelBlow(b)
Где CreateBarrel - создаёт, а BarrelBlow - взрывает.

З.Ы. Перечитал исходник - =-O в рот мои ноги, вспышка от взрыва обрабатывается в том же цикле. Тогда просто так вынести условие клика не получится.


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

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