fix(studio): камера 3-го лица не цепляется за проходимые зоны (canCollide в metadata)
Зона опасности / триггеры (canCollide:false) ловились camera-clamp, и камера прыгала к игроку внутри зоны. Причина: metadata примитива НЕ содержал canCollide, а PlayerController._clampCameraToWorld проверяет md.canCollide. Добавлен canCollide в metadata меша (+ синк при updateInstance). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
2d669a3ff3
commit
6ece149924
@ -186,6 +186,10 @@ export class PrimitiveManager {
|
|||||||
primitiveId: id,
|
primitiveId: id,
|
||||||
primitiveType: type,
|
primitiveType: type,
|
||||||
primitiveKind: typeDef.kind,
|
primitiveKind: typeDef.kind,
|
||||||
|
// canCollide в metadata нужен camera-clamp (PlayerController):
|
||||||
|
// без него камера 3-го лица цепляется за проходимые зоны/триггеры
|
||||||
|
// (canCollide:false) и прыгает к игроку внутри зоны. Баг 2026-06-05.
|
||||||
|
canCollide,
|
||||||
};
|
};
|
||||||
|
|
||||||
// textureAsset — id картинки из AssetManager (пользовательская
|
// textureAsset — id картинки из AssetManager (пользовательская
|
||||||
@ -754,7 +758,10 @@ export class PrimitiveManager {
|
|||||||
this._applyMaterial(data.mesh, typeDef, data.color, data.material);
|
this._applyMaterial(data.mesh, typeDef, data.color, data.material);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (patch.canCollide !== undefined) data.canCollide = patch.canCollide;
|
if (patch.canCollide !== undefined) {
|
||||||
|
data.canCollide = patch.canCollide;
|
||||||
|
if (data.mesh?.metadata) data.mesh.metadata.canCollide = patch.canCollide;
|
||||||
|
}
|
||||||
if (patch.locked !== undefined) data.locked = !!patch.locked;
|
if (patch.locked !== undefined) data.locked = !!patch.locked;
|
||||||
if (patch.visible !== undefined) {
|
if (patch.visible !== undefined) {
|
||||||
data.visible = patch.visible;
|
data.visible = patch.visible;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user