Merge branch 'movement-dev' into PlayerAnimator
This commit is contained in:
commit
0f708ff4cb
9 files changed
+138
-323
No files matched your search
@@ -117,7 +117,7 @@ namespace Code.Gameplay.Camera.CameraStates
|
||||
protected virtual void HandleRotationInput(float deltaTime, Vector3 rotationInput, out Quaternion targetRotation)
|
||||
{
|
||||
// Вращение вокруг вертикальной оси (горизонтальный поворот)
|
||||
var rotationFromInput = Quaternion.Euler(FollowTransform.up * (rotationInput.x * RotationSpeed));
|
||||
var rotationFromInput = Quaternion.Euler(Vector3.up * (rotationInput.x * RotationSpeed));
|
||||
PlanarDirection = rotationFromInput * PlanarDirection;
|
||||
var planarRotation = Quaternion.LookRotation(PlanarDirection, FollowTransform.up);
|
||||
|
||||
|
||||
+40
-3
@@ -15,6 +15,12 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
private readonly float _minWallClimbSpeed;
|
||||
// Пороговый косинус стены
|
||||
public float WallNormalThreshold { get; }
|
||||
|
||||
private bool _hasClimbedThisWallSession;
|
||||
private float _wallClimbCooldownTimer;
|
||||
private readonly float _wallClimbCooldownDuration = 1.5f;
|
||||
|
||||
public bool IsClimbingActive { get; private set; }
|
||||
|
||||
// Конструктор механики залазания на стену
|
||||
public WallClimbMechanic(float wallClimbSpeedFactor, float minWallClimbSpeed, float wallDetectionAngleThreshold)
|
||||
@@ -26,21 +32,32 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
}
|
||||
|
||||
// Обработка столкновения при движении (вызывается при ударе о препятствие)
|
||||
public void OnMovementHit(KinematicCharacterMotor motor, Vector3 hitNormal)
|
||||
public bool TryClimbWall(KinematicCharacterMotor motor, Vector3 hitNormal)
|
||||
{
|
||||
// Проверяем, что это вертикальная или почти вертикальная поверхность (стена)
|
||||
var dotWithUp = Vector3.Dot(hitNormal, motor.CharacterUp);
|
||||
if (Mathf.Abs(dotWithUp) > WallNormalThreshold) return; // Не стена — это пол или потолок
|
||||
|
||||
if (Mathf.Abs(dotWithUp) > WallNormalThreshold)
|
||||
{
|
||||
// Сбрасываем сессию, если коснулись пола/потолка → выход из "режима стены"
|
||||
_hasClimbedThisWallSession = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Запрещаем повторное залазание в рамках одной сессии
|
||||
if (_hasClimbedThisWallSession || _wallClimbCooldownTimer > 0f)
|
||||
return false;
|
||||
|
||||
// Получаем текущую скорость персонажа
|
||||
var currentVelocity = motor.Velocity;
|
||||
|
||||
// Проекция скорости на направление к стене (отрицательная, если летим в стену)
|
||||
var velocityIntoWall = Vector3.Dot(currentVelocity, -hitNormal);
|
||||
|
||||
|
||||
// Если движемся в стену с достаточной скоростью
|
||||
if (velocityIntoWall > _minWallClimbSpeed)
|
||||
{
|
||||
_wallClimbCooldownTimer = _wallClimbCooldownDuration;
|
||||
// Преобразуем часть горизонтальной скорости в вертикальную
|
||||
var verticalBoost = velocityIntoWall * _wallClimbSpeedFactor;
|
||||
|
||||
@@ -49,6 +66,26 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
|
||||
// Предотвращаем заземление и повторное применение в этом кадре
|
||||
motor.ForceUnground();
|
||||
_hasClimbedThisWallSession = true;
|
||||
IsClimbingActive = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void ResetWallClimbSession()
|
||||
{
|
||||
_hasClimbedThisWallSession = false;
|
||||
IsClimbingActive = false;
|
||||
}
|
||||
|
||||
public void TickCooldown(float deltaTime)
|
||||
{
|
||||
if (_wallClimbCooldownTimer > 0f)
|
||||
{
|
||||
_wallClimbCooldownTimer -= deltaTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+84
-16
@@ -17,6 +17,12 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
private Vector3 _lastWallNormal;
|
||||
private float _lastWallContactHeight;
|
||||
private float _leanFactor;
|
||||
private float _leanSign;
|
||||
private Vector3 _leanDirection;
|
||||
|
||||
private Vector3 _lastWallContactPoint;
|
||||
private bool _isLeaningOnWall;
|
||||
private const float WallProximityThreshold = 0.6f;
|
||||
|
||||
public WallLeanMechanic(float maxLeanAngle, float leanSharpness, float heightScale)
|
||||
{
|
||||
@@ -32,29 +38,93 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
}
|
||||
|
||||
// Вызывается из OnMovementHit
|
||||
public void OnWallContact(Vector3 wallNormal, float contactHeight)
|
||||
public void OnWallContact(KinematicCharacterMotor motor, Vector3 wallNormal, float contactHeight)
|
||||
{
|
||||
// Только если это действительно стена (не пол/потолок)
|
||||
var dotWithUp = Vector3.Dot(wallNormal, motor.CharacterUp);
|
||||
if (Mathf.Abs(dotWithUp) > 0.7f) // ~45°, можно настроить
|
||||
return;
|
||||
|
||||
_lastWallNormal = wallNormal;
|
||||
_lastWallContactHeight = contactHeight; }
|
||||
_lastWallContactHeight = contactHeight;
|
||||
_lastWallContactPoint = motor.TransientPosition;
|
||||
|
||||
// Пересчитываем направление наклона
|
||||
_leanDirection = -_lastWallNormal;
|
||||
_leanDirection = Vector3.ProjectOnPlane(_leanDirection, motor.CharacterUp).normalized;
|
||||
|
||||
_leanSign = 1;
|
||||
|
||||
// what the fuck
|
||||
if (_leanDirection.x != 0)
|
||||
{
|
||||
switch (_leanDirection.x)
|
||||
{
|
||||
case -1 or 1 when motor.CharacterRight.x > 0.1f:
|
||||
_leanSign = -1;
|
||||
break;
|
||||
case -1 or 1 when Mathf.Abs(motor.CharacterRight.x) < 0.1f:
|
||||
_leanDirection = new Vector3(0, 0, -1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (_leanDirection.z)
|
||||
{
|
||||
case 1 when Mathf.Abs(motor.CharacterRight.z) < 0.1f:
|
||||
_leanSign = -1;
|
||||
break;
|
||||
case -1 when motor.CharacterRight.z < -0.1f:
|
||||
case 1 when motor.CharacterRight.z > 0.1f:
|
||||
_leanDirection = new Vector3(-1, 0, 0);
|
||||
break;
|
||||
case -1 when motor.CharacterRight.z > 0.1f:
|
||||
case 1 when motor.CharacterRight.z < -0.1f:
|
||||
_leanDirection = new Vector3(1, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_isLeaningOnWall = true;
|
||||
}
|
||||
|
||||
// Обновление каждый кадр
|
||||
public void UpdateLean(KinematicCharacterMotor motor, float deltaTime)
|
||||
{
|
||||
if (!_characterTransform) return;
|
||||
|
||||
var isGrounded = motor.GroundingStatus.IsStableOnGround;
|
||||
|
||||
if (!isGrounded)
|
||||
var currentPosition = motor.TransientPosition;
|
||||
|
||||
var isStillNearWall = false;
|
||||
if (_isLeaningOnWall && _lastWallNormal != Vector3.zero)
|
||||
{
|
||||
var heightDelta = motor.TransientPosition.y - _lastWallContactHeight;
|
||||
var targetLeanFactor = Mathf.Clamp01(heightDelta * _heightScale);
|
||||
_leanFactor = Mathf.Lerp(_leanFactor, targetLeanFactor, 1f - Mathf.Exp(-_leanSharpness * deltaTime));
|
||||
var toWall = currentPosition - _lastWallContactPoint;
|
||||
var distanceToWallPlane = Mathf.Abs(Vector3.Dot(toWall, _lastWallNormal));
|
||||
isStillNearWall = distanceToWallPlane <= WallProximityThreshold;
|
||||
}
|
||||
else
|
||||
|
||||
if (_isLeaningOnWall)
|
||||
{
|
||||
var isBelowContactHeight = currentPosition.y < _lastWallContactHeight;
|
||||
|
||||
if (!isStillNearWall || isBelowContactHeight)
|
||||
{
|
||||
_isLeaningOnWall = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
var heightDelta = currentPosition.y - _lastWallContactHeight;
|
||||
var targetLeanFactor = Mathf.Clamp01(heightDelta * _heightScale);
|
||||
_leanFactor = Mathf.Lerp(_leanFactor, targetLeanFactor, 1f - Mathf.Exp(-_leanSharpness * deltaTime));
|
||||
}
|
||||
}
|
||||
|
||||
if (!_isLeaningOnWall)
|
||||
{
|
||||
_leanFactor = Mathf.Lerp(_leanFactor, 0f, 1f - Mathf.Exp(-_leanSharpness * deltaTime));
|
||||
}
|
||||
|
||||
|
||||
ApplyLeanRotation(motor);
|
||||
}
|
||||
|
||||
@@ -66,13 +136,11 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
return;
|
||||
}
|
||||
|
||||
var leanDirection = -_lastWallNormal;
|
||||
leanDirection = Vector3.ProjectOnPlane(leanDirection, motor.CharacterUp).normalized;
|
||||
if (_leanDirection.sqrMagnitude < 0.01f) return;
|
||||
|
||||
if (leanDirection.sqrMagnitude < 0.01f) return;
|
||||
|
||||
var leanAngle = _leanFactor * _maxLeanAngle;
|
||||
var leanRotation = Quaternion.AngleAxis(leanAngle, Vector3.Cross(motor.CharacterUp, leanDirection));
|
||||
var leanAngle = _leanSign * _leanFactor * _maxLeanAngle;
|
||||
var leanAxis = Vector3.Cross(motor.CharacterUp, _leanDirection);
|
||||
var leanRotation = Quaternion.AngleAxis(leanAngle, leanAxis);
|
||||
_characterTransform.localRotation = leanRotation;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -81,6 +81,7 @@ namespace Code.Gameplay.Character.Controller
|
||||
{
|
||||
// Обновляем таймер перезарядки слайда
|
||||
_slideMechanic.TickCooldown(Time.deltaTime);
|
||||
_wallClimbMechanic.TickCooldown(Time.deltaTime);
|
||||
|
||||
// Если активен слайд - игнорируем весь остальной ввод
|
||||
if (_slideMechanic.IsSliding)
|
||||
@@ -109,8 +110,7 @@ namespace Code.Gameplay.Character.Controller
|
||||
// Обновление вращения персонажа на основе входных данных
|
||||
public void UpdateRotation(ref Quaternion currentRotation, float deltaTime)
|
||||
{
|
||||
// ВО ВРЕМЯ СЛАЙДА НЕ ОБНОВЛЯЕМ ВРАЩЕНИЕ - ПЕРСОНАЖ СМОТРИТ ПРЯМО
|
||||
if (_slideMechanic.IsSliding) return;
|
||||
if (_slideMechanic.IsSliding || _wallClimbMechanic.IsClimbingActive) return;
|
||||
|
||||
switch (_currentCameraMode)
|
||||
{
|
||||
@@ -196,6 +196,11 @@ namespace Code.Gameplay.Character.Controller
|
||||
{
|
||||
_slideMechanic.EndSlide();
|
||||
}
|
||||
|
||||
if (motor.GroundingStatus.IsStableOnGround)
|
||||
{
|
||||
_wallClimbMechanic.ResetWallClimbSession();
|
||||
}
|
||||
}
|
||||
|
||||
// Метод вызывается после обновления персонажа
|
||||
@@ -220,13 +225,8 @@ namespace Code.Gameplay.Character.Controller
|
||||
public void OnMovementHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint,
|
||||
ref HitStabilityReport hitStabilityReport)
|
||||
{
|
||||
_wallClimbMechanic.OnMovementHit(motor, hitNormal);
|
||||
|
||||
var dotWithUp = Vector3.Dot(hitNormal, motor.CharacterUp);
|
||||
if (Mathf.Abs(dotWithUp) <= _wallClimbMechanic.WallNormalThreshold)
|
||||
{
|
||||
_wallLeanMechanic.OnWallContact(hitNormal, motor.TransientPosition.y);
|
||||
}
|
||||
if (_wallClimbMechanic.TryClimbWall(motor, hitNormal))
|
||||
_wallLeanMechanic.OnWallContact(motor, hitNormal, motor.TransientPosition.y);
|
||||
}
|
||||
|
||||
// Обработка отчета о стабильности столкновения
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ namespace Code.Gameplay.Character.Controller.Input
|
||||
var cameraForward = cameraRotation * Vector3.forward;
|
||||
|
||||
// Проецируем на горизонтальную плоскость
|
||||
var horizontalForward = Vector3.ProjectOnPlane(cameraForward, motor.CharacterUp).normalized;
|
||||
var horizontalForward = Vector3.ProjectOnPlane(cameraForward, Vector3.up).normalized;
|
||||
|
||||
// Если проекция вырождена, используем текущее направление персонажа
|
||||
if (horizontalForward.sqrMagnitude < 0.01f)
|
||||
|
||||
@@ -233,7 +233,7 @@ Transform:
|
||||
m_GameObject: {fileID: 453575297}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1.395, z: 0.59}
|
||||
m_LocalPosition: {x: 0, y: 1.395, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
@@ -366,7 +366,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &678700802
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -522,96 +522,7 @@ Transform:
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -10, y: 3, z: 0}
|
||||
m_LocalScale: {x: 2, y: 6, z: 10}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1460292948
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1460292952}
|
||||
- component: {fileID: 1460292951}
|
||||
- component: {fileID: 1460292950}
|
||||
m_Layer: 0
|
||||
m_Name: SFXTest
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!23 &1460292950
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1460292948}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_ForceMeshLod: -1
|
||||
m_MeshLodSelectionBias: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_GlobalIlluminationMeshLod: 0
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!33 &1460292951
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1460292948}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!4 &1460292952
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1460292948}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 7.44, y: 2.04, z: 8.13}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_LocalScale: {x: 10, y: 6, z: 10}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
@@ -956,7 +867,6 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 1959874991}
|
||||
- component: {fileID: 1959874990}
|
||||
- component: {fileID: 1959874992}
|
||||
m_Layer: 0
|
||||
m_Name: SceneScope
|
||||
m_TagString: Untagged
|
||||
@@ -991,20 +901,6 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1959874992
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1959874989}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 88584fd4361b46f6a7326440cd95ce69, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.App.SceneInstallers.GameplaySceneInstaller
|
||||
_gameplaySceneEnvironment:
|
||||
debugSfxTarget: {fileID: 1460292952}
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1014,4 +910,3 @@ SceneRoots:
|
||||
- {fileID: 481156070}
|
||||
- {fileID: 1376862595}
|
||||
- {fileID: 1543748509}
|
||||
- {fileID: 1460292952}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 75793e520683ea032ace153b3040cf4e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,170 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!29 &1
|
||||
OcclusionCullingSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_OcclusionBakeSettings:
|
||||
smallestOccluder: 5
|
||||
smallestHole: 0.25
|
||||
backfaceThreshold: 100
|
||||
m_SceneGUID: 00000000000000000000000000000000
|
||||
m_OcclusionCullingData: {fileID: 0}
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 10
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
m_FogDensity: 0.01
|
||||
m_LinearFogStart: 0
|
||||
m_LinearFogEnd: 300
|
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||
m_AmbientIntensity: 1
|
||||
m_AmbientMode: 0
|
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_HaloStrength: 0.5
|
||||
m_FlareStrength: 1
|
||||
m_FlareFadeSpeed: 3
|
||||
m_HaloTexture: {fileID: 0}
|
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_DefaultReflectionMode: 0
|
||||
m_DefaultReflectionResolution: 128
|
||||
m_ReflectionBounces: 1
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 13
|
||||
m_BakeOnSceneLoad: 0
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
m_IndirectOutputScale: 1
|
||||
m_AlbedoBoost: 1
|
||||
m_EnvironmentLightingMode: 0
|
||||
m_EnableBakedLightmaps: 1
|
||||
m_EnableRealtimeLightmaps: 0
|
||||
m_LightmapEditorSettings:
|
||||
serializedVersion: 12
|
||||
m_Resolution: 2
|
||||
m_BakeResolution: 40
|
||||
m_AtlasSize: 1024
|
||||
m_AO: 0
|
||||
m_AOMaxDistance: 1
|
||||
m_CompAOExponent: 1
|
||||
m_CompAOExponentDirect: 0
|
||||
m_ExtractAmbientOcclusion: 0
|
||||
m_Padding: 2
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
m_PVRSampling: 1
|
||||
m_PVRDirectSampleCount: 32
|
||||
m_PVRSampleCount: 512
|
||||
m_PVRBounces: 2
|
||||
m_PVREnvironmentSampleCount: 256
|
||||
m_PVREnvironmentReferencePointCount: 2048
|
||||
m_PVRFilteringMode: 1
|
||||
m_PVRDenoiserTypeDirect: 1
|
||||
m_PVRDenoiserTypeIndirect: 1
|
||||
m_PVRDenoiserTypeAO: 1
|
||||
m_PVRFilterTypeDirect: 0
|
||||
m_PVRFilterTypeIndirect: 0
|
||||
m_PVRFilterTypeAO: 0
|
||||
m_PVREnvironmentMIS: 1
|
||||
m_PVRCulling: 1
|
||||
m_PVRFilteringGaussRadiusDirect: 1
|
||||
m_PVRFilteringGaussRadiusIndirect: 5
|
||||
m_PVRFilteringGaussRadiusAO: 2
|
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||
m_ExportTrainingData: 0
|
||||
m_TrainingDataDestination: TrainingData
|
||||
m_LightProbeSampleCountMultiplier: 4
|
||||
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_LightingSettings: {fileID: 0}
|
||||
--- !u!196 &4
|
||||
NavMeshSettings:
|
||||
serializedVersion: 2
|
||||
m_ObjectHideFlags: 0
|
||||
m_BuildSettings:
|
||||
serializedVersion: 3
|
||||
agentTypeID: 0
|
||||
agentRadius: 0.5
|
||||
agentHeight: 2
|
||||
agentSlope: 45
|
||||
agentClimb: 0.4
|
||||
ledgeDropHeight: 0
|
||||
maxJumpAcrossDistance: 0
|
||||
minRegionArea: 2
|
||||
manualCellSize: 0
|
||||
cellSize: 0.16666667
|
||||
manualTileSize: 0
|
||||
tileSize: 256
|
||||
buildHeightMesh: 0
|
||||
maxJobWorkers: 0
|
||||
preserveTilesOutsideBounds: 0
|
||||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &1253837927
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1253837929}
|
||||
- component: {fileID: 1253837928}
|
||||
m_Layer: 0
|
||||
m_Name: SceneScope
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1253837928
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1253837927}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3fd1482e4a9dee141aecc5bcd0a4f0f3, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Reflex::Reflex.Core.SceneScope
|
||||
--- !u!4 &1253837929
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1253837927}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 1253837929}
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ee6c9ddf0020bc978ffcb0af4b2464a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in new issue
Block a user