FLYBAT, угол задаётся от 0.0 до 1.0, random(-1,1) выдаёт три разных числа : -1, 0 и 1. Каждое из которых, будучи прибавленно к текущему углу, изменяет его или на 0.0054 градуса, или вообще на ноль. Читай про функцию random, SetActorAngle, GetActorAngle. Ты должен был прочитать их до того, как задавать вопрос.
Что-то типа angle + random(-65536, 65536) / ЧТО-ТО
Это ближе к истине.
Не забывай, угол - это fixed переменная, а ты ему маципуськи подсовываешь типа -1, +1 (что в реале означает крохотные величины, указанные Nil-ом).
Я кажись понял, в чем у тебя ошибка - попробуй вместо -1 и 1 написать -1.0 и 1.0
Вот пример из моего вада, где скрипт самостоятельно поворачивает нос игрока в направлении ВОСТОКА (на карте - вправо).
while (GetActorAngle(0) > 256)
{
SetActorAngle(0, GetActorAngle(0)-256);
delay(1);
}
Еще пример, более подходящий (вычисление вектора "вправо"):
int a,rightx,righty;
a = GetActorAngle(0);
rightx = cos(a + 0.75);
righty = sin(a + 0.75);
А вектор "влево" наверное, будет как-то так:
leftx = cos(a + 0.25);
lefty = sin(a + 0.25);
Скрытый текст:
0.25 соответствует 90 градусам, как можно догадаться
Мне нужен поворот на ОДИН сраный градус в случайную сторону!
Это 1 <<8> 0)
{
SetActorAngle (100, GetActorAngle (100) - 0.02);
Delay (1);
print(s:"You spin me right round, baby right round like a record, baby right round, round, round");
}
}[/code]
Это не работает! То есть скрипт, написанный В ВИКИ, не пашет!
Script 101 (Void)
{
int angle = GetActorAngle (0);
if (CheckInventory("Level") > 2)
{
terminate;
}
SetActorAngle(0, angle + random (5,-5));
}
А вот скрипт из Вики... Который тоже не работает!
script 1 (int spintime)
{
while (spintime-- > 0)
{
SetActorAngle (100, GetActorAngle (100) - 0.02);
Delay (1);
print(s:"You spin me right round, baby right round like a record, baby right round, round, round");
}
}
BioloG
Ты когда-то слышал о такой вещи, как DoomEdNum?
Скрытый текст:
Nil
Я немного не понял, что произошло с постом... Он должен был выглядеть совсем по-другому!
Когда я вставляю скрипт на форум то пост урезается до вон того состояния сверху!
Это номер при помощи которого ты добавляешь своих ACTOR-ов через DoomBuilder или другой редактор. Т.е. ты должен поставить своему ACTOR-у в декорейте DoomEdNum, после чего открыть редактор и установить Актора с этим самым DoomEdNum в нужном тебе месте...
BioloG
У каждого предмета в думе есть уникальный номер, по которому его и ставят на карту, например у старта 1 игрока этот номер равен 1:
Если хочешь поставить новый предмет на карту, надо посмотреть в декорейте его номер (открываешь wad в xwe или slade и смотришь лумп decorate). У твоих голограмм его пока нет:
Значит, ты его дописываешь, например 10667, главное, чтобы он не совпадал с уже занятыми:
Теперь ставишь в редакторе предмет 10667:
В редакторе он будет помечен вопросом как неизвестный объект, но в игре отобразится нормально (конечно, только если ты добавишь wad с голограммами):
Снимки сделаны в первом Doom Builder'е, во втором всё аналогично.
Вопрос: Я создал новый предмет (3д полиобъект). Теперь надо сделать так,чтобы он плавно переместился с пункта А в пункт Б. Как это сделать? Что-то ни одно из действий не подходит.
BETEPAH[iddqd]
Надо создать для кнопки отдельную текстуру (то есть не-свитч), на линию с этой "кнопкой" поставить скрипт, который при скажем "BlueKey" == 1 меняет текстуру своей линии, выполняет нужное действие и проигрывает звук кнопки.
Ваниль: 26 DR Blue Open Wait Close, 32 D1 Blue Open Stay, 99 SR Door Blue Open Stay (fast), 133 S1 Door Blue Open Stay (fast).
Если вместо открытия дверей по этому ключу нужно сделать что-то ещё, распространено извращение с Voodoo Doll и движущимся полом (суть в том, что при открытии двери непосредственно перед вуду оно начнёт двигаться и пересечёт линию, которая и сделает то, что нужно). Работает это только под Бум (если не путаю ничего). Ну и на кнопку вешаем спешл 99 или 133. Возможно сработает также 26 или 32, я очень давно не пытался маппить под Boom.