Team Create (���������� ��������������) + ���������� ���� + ������ 16/17/20/40/44/05 #34

Merged
min merged 69 commits from restore/all-tasks into main 2026-06-08 01:13:01 +00:00
Showing only changes of commit 32cbb7bbe9 - Show all commits

View File

@ -267,14 +267,24 @@ game.self.onTouch(() => {
icon: 'door', category: 'world', icon: 'door', category: 'world',
prims: [{ type: 'cube', x: 0, y: 2, z: 0, sx: 1, sy: 4, sz: 3, color: '#8a5a3c', material: 'matte', name: 'Дверь' }], prims: [{ type: 'cube', x: 0, y: 2, z: 0, sx: 1, sy: 4, sz: 3, color: '#8a5a3c', material: 'matte', name: 'Дверь' }],
scripts: [{ attachTo: 'on-target', code: scripts: [{ attachTo: 'on-target', code:
`// Дверь по E: уезжает В СТОРОНУ (вбок) и возвращается. Ширина двери sx=1, `// Дверь по E: ПОВОРАЧИВАЕТСЯ вокруг петли (левой грани), как настоящая дверь.
// сдвигаем на 3 единицы вбок — проход открывается. // Толщина двери по X (sx=1) → полуширина 0.5. Петля у грани z = центр - halfZ.
let open = false; let open = false;
const p0 = game.self.position; // закрытое положение const p0 = game.self.position;
const halfW = 1.5; // половина ширины двери по Z (sz=3 → 1.5)
// Петля — у левого края двери (по Z): hinge = p0.z - halfW.
const hingeX = p0.x;
const hingeZ = p0.z - halfW;
function placeDoor(angle) {
// Центр двери на расстоянии halfW от петли, повёрнут на angle вокруг петли.
const cx = hingeX + Math.sin(angle) * halfW;
const cz = hingeZ + Math.cos(angle) * halfW;
game.self.move(cx, p0.y, cz);
game.self.rotate(angle);
}
game.self.onInteract(() => { game.self.onInteract(() => {
open = !open; open = !open;
if (open) game.self.move(p0.x + 3, p0.y, p0.z); // уехала вбок (открыта) placeDoor(open ? Math.PI / 2 : 0); // 90° открыта / 0° закрыта
else game.self.move(p0.x, p0.y, p0.z); // вернулась (закрыта)
}, { text: 'Открыть / закрыть', key: 'e', distance: 5 });` }], }, { text: 'Открыть / закрыть', key: 'e', distance: 5 });` }],
}, },
]; ];