Понедельник, 21.07.2025, 23:15
Приветствую Вас Гость RSS
Календарь
« Ноябрь 2010 »
Пн
Вт
Ср
Чт
Пт
Сб
Вс
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Статистика
Дневник
Главная » 2010 » Ноябрь » 21 » Скрипт для дверей
Скрипт для дверей
14:39
Простейший скрипт для дверей:
float openingTime=2.0; // время открытия
float openingAngle=90.0; // угол поворота
float autocloseTime=5.0; // автоматически закроется через
integer steps=4; // колличество шагов при открытии
float omega=0.0; vector axis; rotation closedRot; rotation openRot; integer swinging; integer open; openDoor(integer yes) { vector useAxis=axis; open=yes; if(!yes) useAxis=-axis; llSetTimerEvent(openingTime/(float) steps); llTargetOmega(useAxis,omega,1.0); } go() { if(swinging==0) { if(!open) { axis=llRot2Up(llGetLocalRot()); closedRot=llGetLocalRot(); openRot=llEuler2Rot(<0.0,0.0,openingAngle>*DEG_TO_RAD)*closedRot; } swinging=steps; openDoor(!open); } } rotation slerp(rotation source,rotation target,float amount) { return llAxisAngle2Rot(llRot2Axis(target/=source),amount*llRot2Angle(target))*source; } default { state_entry() { swinging=0; open=FALSE; omega=TWO_PI/360*openingAngle/openingTime; llTargetOmega(ZERO_VECTOR,1.0,1.0); } touch_start(integer dummy) { go(); } collision_start(integer dummy) { go(); } timer() { if(swinging>0) { swinging--; if(swinging!=0) { float amount=(float) swinging/(float) steps; if(open) amount=1.0-amount; llSetLocalRot(slerp(closedRot,openRot,amount)); return; } llTargetOmega(axis,0.0,0.0); if(open) { llSetLocalRot(openRot); llSetTimerEvent(autocloseTime); } else { llSetLocalRot(closedRot); llSetTimerEvent(0.0); } } else // автоматически закрываем { llSetTimerEvent(0.0); openDoor(!open); swinging=steps; } } }
Просмотров: 2879 |
Добавил: volldemar
| Рейтинг: 5.0/1 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Всего комментариев: 2
Порядок вывода комментариев:
По умолчанию
Сначала новые
Сначала старые
0
Самый простой вариант это 2 прима. 1- сама дверь. 2 - ось вращения, с которой потом слинковать дверь. получается что дверь будет вращаться вместе с осью. P.S. Сначала выделяем ось вращения, потом дверь "с шифтом". Жмем Ctrl + L
1
ГостьЯ
(06.05.2011 19:30)
0
Центра вращения по центру проема. Подскажите, как же его сместить к краю (чтобы дверь открывалась, как дверь).