Добавлено (15.03.2015, 17:00) --------------------------------------------- Добавил в конце plPos = plFiringPos и всё сработало, спасибо.
Добавлено (15.03.2015, 17:34) --------------------------------------------- Кстати, ещё, перед plPos = plFiringPos как сделать проверку, какая дистанция от прицела до m_penTarget, например, если fDistance < 16 (пикселей, наверно) { plPos = plFiringPos; }
Тебе нужно измерять не пиксели, а угол отклонения. Получи нормированный вектор от viewpoint'a к прицелу, и ещё один от viewpoint'a к цели, выполни скалярное умножение и получишь угол между ними. Если угол достаточно маленький, включай autoaim.
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.
Скалярное произведение - это число, а не вектор. У него тип FLOAT, а не FLOAT3D. И ещё, ты забыл нормализовать vToCenter. И ещё, от скалярного произведения надо взять арккосинус, это и будет угол в радианах. А этот угол нужно ограничить, чтобы не получались отрицательные значения (если меньше 0, то прибавить 2*PI).
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.
Выведи fNormAngle на экран с помощью CPrintF и посмотри, какие там числа проскакивают перед проверкой на отрицательность: CPrintF("Norm Angle: %f\n", fNormAngle);
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.
Ситуация. Хочу сделать в тригере несколько граф "Message", что бы они показывались одновременно в несколько строчек. Полазив в коде я вышел на ссылку функцию "PrintCentrMessage" с помощью которой появляется сообщение(написал коряво т.к. исходников под рукой нет). А саму функцию так и не нашел. 1. Где она ? 2. Как находить функции (что бы каждый раз не спрашивать на форуме) ? 3. Может есть способ проще ?
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Здравствуйте! 1. Скажите как увеличить мясо (например убил гнаара бензопилой, мясо больше стало)? 2. Как добавить звуки металла когда хожу и когда стреляешь на пол - звук, (я добавил новый тип - "metal")
Тогда мне нужны SDK D-6, а их нету, мне лучше узнать как сделать!
Ну если с этим я тупанул, то:
Цитатаvanya109 ()
Мне нужно количество мясо увеличить, а не размер модели увеличить!
Лови скрин. Слева четыре кусочка поменьше, справа четыре кусочка в два раза больше. Только не говори что визуально не создается впечатление, в том что правая кучка больше.
Лови скрин. Слева четыре кусочка поменьше, справа четыре кусочка в два раза больше. Только не говори что визуально не создается впечатление, в том что правая кучка больше.
Вопросы. 1. Как можно вывести текст на экран, кроме как через функцию PrintCenterMessage. 2. Я с клонировал ентию "Damager" и переделал ее так.
Код
if (penVictim!=NULL) { if (!(penVictim==m_penLastDamaged && _pTimer->CurrentTick()<m_tmLastDamage+0.1f)) { // InflictDirectDamage(penVictim, penInflictor, m_dmtType, m_fAmmount, // penVictim->GetPlacement().pl_PositionVector, FLOAT3D(0,1,0)); // m_penLastDamaged = penVictim; // m_tmLastDamage = _pTimer->CurrentTick(); ((Lc*)&*m_penLastDamaged)->Funkcia(m_iNOMER); Пробовал по очереди ((Lc*)&*penVictim)->Funkcia(m_iNOMER); Пробовал по очереди
У личинки (это враг) добавил функцию
Код
void Funkcia(INDEX m_iNOMER) { m_penMarker = NULL; switch (m_iNOMER) { case 0: GetModelInstance()->AddAnimation(idzero, AN_LOOPING|AN_NORESTART|AN_CLEAR,1,0); break; case 1: Prig(); break; case 2: GetModelInstance()->AddAnimation(idL1, AN_LOOPING|AN_NORESTART|AN_CLEAR,1,0); break; default: ASSERT(default); } }
В едиторе поставил тачфилд, который работает только по врагам. При попадании Личинки на тачфилд игра вылетает в 50% случаев. В остальные 50% все работает как надо.
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Советую запускать в режиме отладки. Если студия настроена правильно, то при вылете ты сможешь посмотреть, на каком именно моменте возникла проблема, а также значения переменных в этот момент.
Что это вообще за кустарный метод с AddAnimation? Ты ведь не добавляешь к модели новую анимацию.
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.
В оригинале я планировал выполнить некую функцию. " Prig(); " А GetModelInstance()->AddAnimation(idL1, AN_LOOPING|AN_NORESTART|AN_CLEAR,1,0); я поставил чисто что бы проверить работоспособность системы после того как заметил 50 % вылеты. Я хотел реализовать выполнение врагом различных действий при попадании на тачфилд. Взял дамагер. Перепилил, что бы он в место урона, ентии которой попалась на тачфилд, отправил некое число "m_iNOMER". А у врага уже в зависимости от числа выполняем функцию. P.S. Если это важно. У другой ентии я подобным образом вызываю и анимацию у СКА модели (Точнее мне подсказали сделать так). А, что есть идей лучше ?
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Здравствуйте, я уже 3 раза спрашивал : "как добавить звуки шагов и пристрельбе на пол был звук металла? Я добавил тип "metal"!" Я уже устал так спрашивать, если не ответят, мне придется создать отдельную тему. Я конечно понимаю что сложно, но мне правда нужно добавить звуки! Я пробовал что-то сделать, но мне постоянно программа писала ошибку - что-то несуществует (непомню)!
Я хотел реализовать выполнение врагом различных действий при попадании на тачфилд.
Но зачем тебе AddAnimation?? Тебе ведь нужно проиграть анимацию! Проиграть существующую, а не создать новую, где логика? =Р
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.
Хорошо. Тогда еще вопрос. Как проиграть анимацию у СКА моделей ?
Добавлено (17.04.2015, 08:59) --------------------------------------------- P.S.Просто у меня работает (хотя судя по Вашим словам работать не должно), и проблем с этим не было. Учитывая то, что именно такой функцией пользовались разработчики у СКА версии зорга.
Всё очень серьёзно. P.S. Не пишите мне на Email, пишите в Л.С.
Чтобы не задавать постоянно такие вопросы, советую сперва заглянуть в интерфейс CModelInstance. Название метода, который ты ищешь, должно быть интуитивно понятно и прокомментировано. vanya109, ты сам читал, что за ошибку выдал компилятор? Прочитай и скажи, как ты её понимаешь. Потому что она содержит настолько исчерпывающий ответ, что я не мог бы ответить более конкретно.
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.