А, ну да, можно и с помощью ContinueCast, результат будет тот же, может, даже, чуть быстрее. А если создавать в цикле новые экземпляры CCastRay вместо вызова ContinueCast, то не грех было бы сделать пули, отлетающие рикошетом от стен. )
Сообщение отредактировалSLAwww - Суббота, 26.05.2012, 19:32
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Ненене, то, что ты показал только что - это получение структуры типа EntityInfo. Тебе надо: 0) Создать и настроить объект класса CCastRay. 1) Бросить луч GetWorld()->CastRay(crYourCastRay) 2) Проверить, ударили ли мы что-нибудь (параметр cr_penHit должен быть ненулевым) 3) Если мы что-то ударили, проверить его rendertype (должен быть RT_MODEL). Или можно проверять на признак наследования от класса CEnemyBase, но тогда луч остановится на первой попавшейся модели, и не обязательно это будет CModelHolder2, так что лучше проверять rendertype. 4) Если действительно RT_MODEL, то нанести повреждение (не важно, если объект не может быть повреждён - тогда просто ничего не произойдёт). Затем либо выполнить ContinueCast, либо создать новый CCastRay, бросить его и вернуться к 2)
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
$оучаснеG, А причём здесь стрельба из пулевого оружия. Делать выстрел пулей я умею. Я просто не знаю куда сувать код на создание следующего луча в CBullet
А не многовато ли ты хочешь? Всмотрись внимательно в цикл, который начинается с while(ctCasts<10), разберись, что делает каждый кусок кода, и вноси нужные тебе изменения.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Нет, тебе как раз нужен бесконечный цикл, из которого будет совершаться выход (break) только тогда, когда луч уйдёт в пустоту (cr_penHit==NULL), или когда ударится об кисть.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
SLAwww, А я тут заметил код, если ентитя из плоти то там луч продолжается(GetWorld()->ContinueCast(crRay);) для того чтобы зарендерить партиклы крови на стене, можно использовать это чтобы поразить уроном ентитю находящююся на линии луча если она является наследником класса CEnemyBase.
НАЗВАНИЕ_АТТАЧМЕНТА - посмотри в .h-файле, который был автоматически создан SeriousModeler'ом при создании основной модели. НАЗВАНИЕ_АНИМАЦИИ_АТТАЧМЕНТА - посмотри в .h-файле модели аттачмента. Оба эти файла, кстати говоря, нужно подключить к проекту и заинклюдить, хотя это и не обязательно, т.к. и название аттачмента, и его номер - лишь макроопределения обычных целых чисел, то есть, если у модели один аттачмент, то его номер всегда будет 0. ФЛАГИ_АНИМАЦИИ_АТТАЧМЕНТА - может быть 0, либо комбинация нескольких флагов, как AOF_LOOPING, AOF_NORESTART и т. п., которые, по сути, тоже являются обычными целыми числами, но желательно писать именно названия флагов (для понятности и переносимости). 2) void Particles_Death(CEntity *pen, TIME tmStart)
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Слав, у мЭня серьёзные траблы. Перестали показываться данные в Нетриксе. Везде пишет No messages. До этого она вообще не открывалась - вылетало с ошибкой памяти. Но после замены Player.es чистым(там были разные эксперементы, которые не представляли никакой ценности) - стала открываться с указанной мной уже проблемой. =((
Сообщения Инертана хранятся в m_acmiMessages. Это - CDynamicStackArray, то есть, ты можешь вызвать его метод Count(), чтобы проверить, есть ли в нём какие-либо сообщения. Если есть - значит, проблема в их отображении. Если нет - проблема в их добавлении.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Вотъ тут вопрос один возник - как заменить bar на изображение? То есть, чтобы часть картинки "обрезалась" при определенном значении переменной. К примеру тот же мод BTBA - Картинка начинает обрезаться с краю. Как осуществить на C++ - хз. Есть варианты? (буду благодарен)
Спасибо SLAwww. Получилось как надо. Такая штука. Мне надо чтобы атачмент (плоский квадрат имитирует огонь) всегда был повернут к сему как дым. Ну или как еще можно прикрепить огонь к персонажу.(враг). Ну и второе необязательное (так из интереса) как можно сделать чтоб в главном меню была не тексура а 3д модель.
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Модель в меню вызывает подвисание(в моде Алексея или даже моём) при открытии любого пункта, не знаю как у других.
Добавлено (26.06.2012, 15:21) --------------------------------------------- Артём, BTBA полон загадок. Эх хочу тачки с физикой как там, хотя у меня уже есть пара задумок которые хорошо себя показали.
В XBOX анимированная текстура и там рендарятся её фреймы. А BTBA там как раз урезается текстура.
P.S. Уже пальцы болят. Строчу с мобилки я щас на даче с ноутом. А инета как известно нет.
Добавлено (26.06.2012, 15:48) --------------------------------------------- Арт. Полистай тему Слав где-то на 37 странице толковал метод с анимацией. А я у себя в моде использую 100 IF операторов и столько же ХУД-ДРАВОВ, чтобы достичь того же эффекта что в BTBA для жизней и брони
switch(переменная) { case значение_1 : { кусок_кода_1; break; } case значение_2 : { кусок_кода_2; break; } ... case значение_N : { кусок_кода_N; break; } default : break; }
А модель в меню не имеет никаких оснований тормозить. Это уже ты там что-то не совсем то написал. Достаточно было посмотреть код, который отвечает за рендеринг моделей в Инертане, и скопировать его (с небольшими изменениями).
CAHEK, чтобы модель всегда смотрела на игрока - это задаётся не через СДК, а во время создания модели в Serious Modeler. Там в скрипте есть параметры FLAT и HALF_FLAT. Это - то, что тебе нужно.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Один вопрос - нагружает ли это игру, если идёт проверка одного значения в сотне операторов? Да и с таким подходом уж лучше проще сделать какой-то шаг деления
seriously_petr, это дикость какая-то - столько ИФов. switch - это почти как один ИФ, он выполняется гораздо быстрее, и является оптимальным в плане оптимизации кода при множественном ветвлении. Конечно, ты сейчас не заметишь разницы, зато её заметит процессор, и когда ты будешь писать что-то более сложное, выбор оператора может стать ключевым.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.