1) Как сделать ускорение для актора -- должен разгоняться в северную сторону (вниз по автокарте)? При этом его собственная скорость равна нулю, т. е. передвигаться самостоятельно он не может.
2) Возможно ли заставить этого актора отскакивать от полиобъекта при движении последнего, не блокируя его?
Обязательные условия и ограничения: полиобъект приходит в движение с клавиатурной кнопки (уже сделано), должны учитываться угол падения, скорость и ускорение, актор всё время тянется на север.
3) Как сделать нормальное отскакивание этого же актора от стен? Флаги +WALLBOUNCING, +HEXENBOUNCE и иже с ними не помогают.
Для всего возможно и нужно использование Decorate'а и ACS-скриптов, правда, с последними я не особо дружу.
1) Тебе нужен конвеерный пол, который будет толкать объект строго в одном направлении с любой нужной тебе скоростью. Так ты создашь имитацию притяжения шарика вниз.
2) ХЗ.
3) Могу подсказать одну штуку, может, она как-то пригодится:
Скрытый текст:
script 2( int angle, int x, int z ) {
ThrustThing( angle, x*16, 1 );
ThrustThingZ( 0, z*16, 0, 1 );
}
Скрипт привязывался к объекту ZDoom "Actor hits floor". Игрок наступал на трамплин и улетал далеко вперед и высоко. Можно подредактировать скрипт, убрав "подпрыгивание" (у нас же "плоский" пинбол?). А вокруг стен сделать просто обрамление сектором, чтобы "actor hits floor" касался только самого края стен, создавая эффект, что мячик отскакивает от стены (а не от пола возле стены).
1) Пока что движение вниз осуществляется в Decorate командной "ThrustThing( 192, 1 )". Она, вроде, более приемлема, т. к. у меня на поле есть секторы-над-секторами (сделал с помощью "мостов"), и я сомневаюсь, что конвейер на уровне 0 сможет дотянуться до высоты 32, например. Тогда уж лучше ветер использовать. Но тут возникает вопрос, который я не так сформулировал -- бесконечной акселерации шарика нет, он доходит до предусмотренного сектором/ThrustThing'ом максимума ускорения и продолжает двигаться с такой скоростью. Возможно решение с новым Inventory-типом "BallSpeed": каждый раз инкрементировать его количество у шарика и смотреть уже по нему, если меньше десяти -- ThrustThing( 192, 1 ), <20 -- ThrustThing( 192, 2 )... Но как заставить скорость уменьшаться/обнуляться при соприкосновении со стеной? Да и слишком громоздкий код писать придётся.
3) Пинбол плоский. Что за объект "Actor hits floor"? Я такого не нашёл.
Да, забыл сказать, что я делаю под ZDoom in Hexen format и что актор шарика может активировать Monster-линии. Если нужно, добавлю флаги ACTIVATEPCROSS и ACTIVATEIMPACT (выстрел-линии).
Я бы это всё делал во-первых порталами, а во-вторых зскриптом. Попробую сделать пример чуть позже.
Без зскрипта обойтись ещё можно, а вот без порталов не вариант. У полиобъектов нет верха, выглядят как говно.
2 DeXiaZ: UDMF для освоения неудобный, я честно пытался начать с него, не получилось. Я ведь пытаюсь ещё и максимально возможную совместимость с остальными портами сохранить.
Ладно, переконвертирую.
ZZYZX, можешь пример до начала-середины июля сделать? Спасибо.
Я ведь пытаюсь ещё и максимально возможную совместимость с остальными портами сохранить.
Алоэ, Вы меня простите, но:
The Universal Doom Map Format (UDMF), also known as "TextMap" is a new map format described by text files. The format is the result of an ongoing cooperation between source port developers to create a standardized map format that is extensible and easy to code for.
Уж куда более СОВМЕСТИМЕЕ, чем UDMF - формата нету. Его Вы даже текстовиком можете отредактировать, а поддерживает он все фичи, какие только есть в сурспортах.
ЗЫ: Неудобный формат - качайте GZDoom Builder.
Потом отсеете фичи гздума, хотя если Вам настоятельно советуют делать порталы, то можете уже забыть за ZDoom сурспорт. И за Zandronum походу тоже (или в них порталы включили?).
Да, верно, забыл. Он громоздкий очень, вот это минус.
Громоздкий это как? Тем что больше на 3-4 галочки? Так это только в плюс, а не минус.
А еще мне не понятно почему ты используешь вид с верху, когда можно поставить камеру с боку и использовать худобедную физику гоззы, это я про вот такое, нажал на кнопку, шарик подскочил, полетел вверх и когда импульс заканчивается, шар падает вниз.
Громоздкий это как? Тем что больше на 3-4 галочки? Так это только в плюс, а не минус.
Громоздкий по объёму записываемой в WAD информации, хотя более удобный в плане восприятия для человеческого глаза.
alekv:
А еще мне не понятно почему ты используешь вид с верху, когда можно поставить камеру с боку
Вообще не понял. Где там хоть один вид сверху? Или в это понятие входят камеры с наклоном в 20 градусов?
Если поставить камеры сбоку, из-за стенок не будет видно поля. Оно у меня не вертикальное, если что.
Вопрос: если на монстра(уничтожение его) повесить через скрипт открытие двери, но у монстра не будет галочки на присутствие в дедматче(будет только сингл и кооп), то дверь не откроется при старте карты в дедматч режиме?
(понимаю вопрос странный, но нет возможности проверить, подстраховываюсь так сказать)
sanek_47, я знаю только ультра костыльный вариант. Он рабочий, но выкладки кода не буду делать, потому что все коды уже про...потеряны.
Делалось это для имитации ситуации из P.T. - надо было смотреть на один объект, который бы вызвал скрипт (открытие двери).
Итак, пускаем из глаз думера через промежутки времени (советую через не очень частые, иначе игра зависнет) очень быстрые прожектайлы.
Актор, который ты хочешь навязать скриптом "взгляда" должен состоять из двух акторов.
Первый актор будет фейком с минимум хп (1, например). Прожектайлы из глаз игрока его убивают, что должно потом вызвать запуск скрипта, И ПРИ ЭТОМ смерть первого актора мгновенно заспавнит второй, который будет действовать (я ввожу двух акторов на случай, если это монстр).
И да, советую обязательно привязать СПЕЦ. ДАМАГ для актора, чтобы Думгай не убивал глазами остальных монстров. Будет тогда странно.
sanek_47 Можно попробовать A_JumpIfInTargetLOS И попробовать актор этот выкидывать в стейт "Death", если в билдере будешь действие актору задавать.
A_JumpIfInTargetLOS("стейт", угол_поля_зрения_смотрящего, макс._дистанция, дистанция)