![]() |
Упорядоченное исчезновение объектов
У меня проблема: мне нужно, чтобы при выстреле в блок он изчезал, я создал тип, и всё как бы работает, но если я сделаю выстрел в один из блоков, то ещё уничтожить можно будет только блоки с порядковым номером меньше первого исчезнувшего, т.е. у меня 8 блоков:01234567, если я стреляю в 4, он исчезает и ещё можно уничтожить 012 и 3, а 567 - нельзя...Как этого избежать?
Вот код: Код:
Graphics3D 640,480,16,1 |
Ответ: Упорядоченное исчезновение объектов
Сдается мне, что скрытие объекта не прекращает проверку коллизий, попробуй вместо HideEntity AllBlocks(i)\ent удалить его, хотя бы для теста. Если начнут остальные удаляться, то косяк здесь.
Еще по коду: jspeed = 1.40 — интовая переменная, а с дробным значением HidePointer — вызываешь в цикле, а достаточно перед циклом 1 раз стиль именования переменных пляшет :) |
Ответ: Упорядоченное исчезновение объектов
Спасибо за замечания, исправил :)
Delete AllBlocks(i)\ent не работает, а Delete AllBlocks(i) вообще программу выносит:dontknow: |
Ответ: Упорядоченное исчезновение объектов
Попробуй Exit убрать.
|
Ответ: Упорядоченное исчезновение объектов
Спасибо большое, работает :)
А за что EXIT отвечает в данном случае? |
Ответ: Упорядоченное исчезновение объектов
Exit прекращает работу цикла, переводя выполнение на строку после слова Next. Не только в данном случае но и везде. Если циклы вложенные, то выйдет только из того в котором стоит Ехит.
Убрать ехит круто, но лучше этого не делать, в том смысле что та проверка на коллизию после скрытия объекта не должна работать вовсе, т.е. объект нужно исключить из проверки. Почему бы тебе не перебирать блоки используя конструкцию for ... each как сделано для пуль? Тогда не будет вылетать после удаления и гарантированно в проверку удалённый не попадёт. Если нужен именно массив, то можешь писать так: Код:
For i=0 To 7 |
Ответ: Упорядоченное исчезновение объектов
for...each я пробовал и функцию отдельную делал, но я не могу понять, как в этом случае мне выделять отдельные объекты и для каждого прописывать координаты...
|
Ответ: Упорядоченное исчезновение объектов
Вот ещё вопрос по коллизиям: мне, например, нужно, чтобы блоки по отдельности исчезали, не от попадания пули, а от столкновения с игроком, однако, как я не изменял код, блоки либо исчезают все вместе, либо не исчезают вообще, что делать?
|
Ответ: Упорядоченное исчезновение объектов
Код у тебя будет выглядеть аналогично тому, что и при попадание пуль! При поподание ты же тоже коллизию проверяешь и убираешь объект, так же и с игроком!
|
Ответ: Упорядоченное исчезновение объектов
Цитата:
Код:
;1й блок Код:
Local blockEntity% = EntityCollided(player, Tblock) Код:
Function getBlockByIndex.blocks(index%) Я рекомендую по стилю вот что: - типы называй начиная с заглавной буквы T: TBullet, TBlock и т.д. - типы коллизий объявляй константой и большими буквами, как сделано для пуль: Const TYPE_PLAYER = 1 Const TYPE_BLOCK = 2 Const TYPE_BULLET = 3 |
Ответ: Упорядоченное исчезновение объектов
Цитата:
Жека, блоки создаются, но не более, по-всякому уже перепробовал - не получается...и ещё блитз ругается на строчку Код:
Local b.blocks = Object.blocks (EntityName (blockEntity)) |
Ответ: Упорядоченное исчезновение объектов
L-ee-X, Жека, извиняюсь, я идиот, всё работает, я просто поленился разобраться как следует, спасибо за помощь :)
но на Local блитз всё-таки ругается :) |
Ответ: Упорядоченное исчезновение объектов
Цитата:
у тебя в коде выше уже есть переменная b, в той же области видимости (знаешь про такое наверное), вот и предупреждение, т.к. две одинаковые переменные нельзя объявлять, замени переменную на _b или bbb и всё окей будет. Вообще , крайне желательно везде писать Local (и Global), и указывать типы переменных # % $. |
Ответ: Упорядоченное исчезновение объектов
Спасибо :)
|
Часовой пояс GMT +4, время: 03:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot