HoloCop in progress
This commit is contained in:
1 parent
2697212f05
commit
430b250075
79 files changed
+120745
-45077
No files matched your search
@@ -91,6 +91,11 @@ MonoBehaviour:
|
||||
m_SerializedLabels:
|
||||
- UIPanel
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 5ff8bf03d4ecf4809a23c66411ca6f5a
|
||||
m_Address: Assets/OfficeGame/Battle/PlayerStuff/PlayerDecisionMarkerConfig.asset
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: 7d927d895d0ac44718014776d136e9bf
|
||||
m_Address: Assets/OfficeGame/Battle/UI/TimelinePanel.prefab
|
||||
m_ReadOnly: 0
|
||||
|
||||
@@ -64,9 +64,14 @@ namespace Code.Game.TestingLevel
|
||||
.AsUniTask();
|
||||
|
||||
var factoryConfig = new SingleConfig<PlayerFactorySettings>();
|
||||
|
||||
var playerDecisionMarkerConfig = new SingleConfig<PlayerDecisionMarkerConfig>();
|
||||
var attackActionsConfigs = new MultipleConfig<BattleActionParameters>();
|
||||
|
||||
await UniTask.WhenAll(factoryConfig.LoadConfig(), attackActionsConfigs.LoadConfigs());
|
||||
await UniTask.WhenAll(
|
||||
factoryConfig.LoadConfig(),
|
||||
attackActionsConfigs.LoadConfigs(),
|
||||
playerDecisionMarkerConfig.LoadConfig());
|
||||
|
||||
var factory = new PlayerFactory(factoryConfig);
|
||||
var player = await factory.CreatePlayer();
|
||||
@@ -86,11 +91,18 @@ namespace Code.Game.TestingLevel
|
||||
(BattleTimelinePanel)await Context.UIFactory
|
||||
.LoadPanel(UIPanelType.BattleTimelinePanel, false);
|
||||
|
||||
PlayerDecisionMarker playerDecisionMarker =
|
||||
Object.Instantiate(playerDecisionMarkerConfig.Config.PlayerDecisionMarkerPrefab);
|
||||
playerDecisionMarker.Toggle(false);
|
||||
Object.DontDestroyOnLoad(playerDecisionMarker);
|
||||
|
||||
// ((OpenMovementCameraState)Context.Camera.CurrentBaseState).SetTarget(player.transform);
|
||||
|
||||
void InstallExtra(Scene scene, ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterValue(attackActionsConfigs);
|
||||
builder.RegisterValue(playerDecisionMarker);
|
||||
|
||||
builder.RegisterValue(factoryConfig);
|
||||
builder.RegisterValue(factory, new[] { typeof(IPlayerFactory) });
|
||||
builder.RegisterValue(playerKinematicCharacterMotor);
|
||||
|
||||
@@ -1,35 +1,77 @@
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Code.Infrastructure.Input;
|
||||
using Code.Infrastructure.Utils;
|
||||
using Code.OfficeGame.BattleMode.Actions.HoloCopy;
|
||||
using Code.OfficeGame.BattleMode.HitBoxes;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Attributes;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Code.OfficeGame.BattleMode.Actions.Attacks
|
||||
{
|
||||
public class BattleActionPlayerAttackMMA : BattleAction
|
||||
{
|
||||
private Animator _animator;
|
||||
[SerializeField] private HoloCop holoCop;
|
||||
[SerializeField] private Animator animator;
|
||||
private EntityHitBoxes _entityHitBoxes;
|
||||
private AttackActionConfig _attackData;
|
||||
public int EntryStateHash => Animator.StringToHash("WalkBlend");
|
||||
|
||||
private int _currentFrame;
|
||||
|
||||
private IInputService _inputService;
|
||||
private CancellationTokenSource _waitForEnterTokenSource;
|
||||
private BattleActionDecisionResultCode _decisionResultCode;
|
||||
|
||||
[Inject]
|
||||
public void Construct(MultipleConfig<BattleActionParameters> attackData)
|
||||
public void Construct(MultipleConfig<BattleActionParameters> attackData, IInputService inputService)
|
||||
{
|
||||
_animator = GetComponentInChildren<Animator>();
|
||||
_inputService = inputService;
|
||||
|
||||
_entityHitBoxes = GetComponent<EntityHitBoxes>();
|
||||
|
||||
_attackData = (AttackActionConfig) attackData.Configs.SingleOrDefault(x=>x.ActionType == ActionType);
|
||||
}
|
||||
|
||||
|
||||
public override async UniTask<BattleActionDecisionResult> DecideAction()
|
||||
{
|
||||
_currentFrame = 0;
|
||||
Finished = false;
|
||||
|
||||
_waitForEnterTokenSource = new CancellationTokenSource();
|
||||
_decisionResultCode = BattleActionDecisionResultCode.CancelDecision;
|
||||
|
||||
_inputService.BindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Confirm,
|
||||
ConfirmAttack);
|
||||
_inputService.BindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Cancel,
|
||||
CancelAttack);
|
||||
|
||||
return new() { ResultCode = BattleActionDecisionResultCode.Decided, FrameDuration = _attackData.TotalFrames};
|
||||
holoCop.Simulate(TickHoloCopy, _waitForEnterTokenSource.Token).Forget();
|
||||
|
||||
await UniTask.WaitUntilCanceled(_waitForEnterTokenSource.Token).SuppressCancellationThrow();
|
||||
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Confirm,
|
||||
ConfirmAttack);
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Cancel,
|
||||
CancelAttack);
|
||||
|
||||
_currentFrame = 0;
|
||||
|
||||
return new() { ResultCode = _decisionResultCode, FrameDuration = _attackData.TotalFrames};
|
||||
}
|
||||
|
||||
private void CancelAttack(InputAction.CallbackContext obj)
|
||||
{
|
||||
_decisionResultCode = BattleActionDecisionResultCode.CancelDecision;
|
||||
_waitForEnterTokenSource?.Cancel();
|
||||
}
|
||||
|
||||
private void ConfirmAttack(InputAction.CallbackContext obj)
|
||||
{
|
||||
_decisionResultCode = BattleActionDecisionResultCode.Decided;
|
||||
_waitForEnterTokenSource?.Cancel();
|
||||
}
|
||||
|
||||
public override BattleActionType ActionType => BattleActionType.PlayerAttackMMA;
|
||||
@@ -40,7 +82,7 @@ namespace Code.OfficeGame.BattleMode.Actions.Attacks
|
||||
|
||||
if (_currentFrame == 0)
|
||||
{
|
||||
_animator.Play(_attackData.StateHash, 0, 0f);
|
||||
animator.Play(_attackData.StateHash, 0, 0f);
|
||||
}
|
||||
|
||||
_currentFrame++;
|
||||
@@ -70,9 +112,23 @@ namespace Code.OfficeGame.BattleMode.Actions.Attacks
|
||||
|
||||
public void CompleteOrInterruptAction()
|
||||
{
|
||||
_animator.Play(EntryStateHash, 0, 0f); // Создать None State и кинуть эту штуку туда
|
||||
animator.Play(EntryStateHash, 0, 0f); // Создать None State и кинуть эту штуку туда
|
||||
_entityHitBoxes.DisableAllHitboxes();
|
||||
Finished = true;
|
||||
}
|
||||
|
||||
// HoloCopy
|
||||
|
||||
private bool TickHoloCopy(HoloCop holoCop, float tickDelta)
|
||||
{
|
||||
if (_currentFrame == 0)
|
||||
{
|
||||
holoCop.Animator.Play(_attackData.StateHash, 0, 0f);
|
||||
}
|
||||
|
||||
_currentFrame++;
|
||||
|
||||
return _currentFrame >= _attackData.TotalFrames;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ using System.Threading;
|
||||
using Code.Game.Gameplay.Player;
|
||||
using Code.Infrastructure.Camera;
|
||||
using Code.Infrastructure.Input;
|
||||
using Code.OfficeGame.BattleMode.Actions.Player;
|
||||
using Code.OfficeGame.BattleMode.Timeline;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using KinematicCharacterController;
|
||||
@@ -30,8 +31,10 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
[Inject]
|
||||
public void Construct(
|
||||
CameraStateMachine cameraStateMachine,
|
||||
IInputService inputService)
|
||||
IInputService inputService,
|
||||
PlayerDecisionMarker playerDecisionMarker)
|
||||
{
|
||||
_playerDecisionMarker = playerDecisionMarker;
|
||||
_cameraStateMachine = cameraStateMachine;
|
||||
_inputService = inputService;
|
||||
_movementController = GetComponent<MovementController>();
|
||||
@@ -87,7 +90,8 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
float inputMagnitude = (_currentCornerIndex == _corners.Length - 1 && distance < maxStep && maxStep > 0f)
|
||||
? distance / maxStep
|
||||
: 1f;
|
||||
|
||||
|
||||
// TODO Для последнего кадра должен быть особый Look совпадающий с маркером
|
||||
var aiInputs = new AICharacterInputs
|
||||
{
|
||||
MoveVector = moveNormal * inputMagnitude,
|
||||
@@ -116,6 +120,7 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
|
||||
private void StopMovementAndFinish()
|
||||
{
|
||||
Debug.Log("MovementFinished");
|
||||
var emptyInputs = new AICharacterInputs
|
||||
{
|
||||
MoveVector = Vector3.zero,
|
||||
@@ -142,15 +147,23 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
ConfirmPosition);
|
||||
_inputService.BindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Cancel,
|
||||
CancelPosition);
|
||||
_inputService.BindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Watchment,
|
||||
MarkPosition);
|
||||
|
||||
_playerDecisionMarker.Toggle(true);
|
||||
|
||||
await UniTask.WaitUntilCanceled(_waitForEnterTokenSource.Token).SuppressCancellationThrow();
|
||||
|
||||
_playerDecisionMarker.Toggle(false);
|
||||
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Select,
|
||||
SelectPosition);
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Confirm,
|
||||
ConfirmPosition);
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Cancel,
|
||||
CancelPosition);
|
||||
_inputService.UnbindActionPerformed((int)ActionMappings.BattleMode, (int)BattleModeActions.Watchment,
|
||||
MarkPosition);
|
||||
|
||||
_waitForEnterTokenSource.Dispose();
|
||||
_waitForEnterTokenSource = null;
|
||||
@@ -163,6 +176,7 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
public override BattleActionType ActionType => BattleActionType.Move;
|
||||
|
||||
private int _totalFrames;
|
||||
private PlayerDecisionMarker _playerDecisionMarker;
|
||||
|
||||
private void CancelPosition(InputAction.CallbackContext obj)
|
||||
{
|
||||
@@ -217,18 +231,37 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
// Округляем вверх, так как последний неполный шаг тоже занимает 1 целый кадр
|
||||
return Mathf.CeilToInt(effectiveDistance / stepPerFrame);
|
||||
}
|
||||
private void SelectPosition(InputAction.CallbackContext input)
|
||||
|
||||
private RaycastHit[] _hitBuffer = new RaycastHit[1];
|
||||
private Vector3 _lastViewedPosition;
|
||||
private void MarkPosition(InputAction.CallbackContext input)
|
||||
{
|
||||
var position = _cameraStateMachine.Camera.transform.position;
|
||||
var direction = _cameraStateMachine.Camera.transform.forward;
|
||||
|
||||
var didHit = Physics.Raycast(position, direction, out RaycastHit hit, Mathf.Infinity, _navMeshMask);
|
||||
var hitCount = Physics.RaycastNonAlloc(position, direction, _hitBuffer, Mathf.Infinity, _navMeshMask);
|
||||
|
||||
if (!didHit) return;
|
||||
if (hitCount == 0) return;
|
||||
|
||||
Debug.Log($"Hit {hit.point}");
|
||||
var hit = _hitBuffer[0];
|
||||
|
||||
_playerDecisionMarker.MoveMarker(hit.point);
|
||||
|
||||
_targetPosition = hit.point;
|
||||
_lastViewedPosition = hit.point;
|
||||
}
|
||||
|
||||
private void SelectPosition(InputAction.CallbackContext input)
|
||||
{
|
||||
// var position = _cameraStateMachine.Camera.transform.position;
|
||||
// var direction = _cameraStateMachine.Camera.transform.forward;
|
||||
//
|
||||
// var didHit = Physics.Raycast(position, direction, out RaycastHit hit, Mathf.Infinity, _navMeshMask);
|
||||
//
|
||||
// if (!didHit) return;
|
||||
|
||||
Debug.Log($"Hit {_lastViewedPosition}");
|
||||
|
||||
_targetPosition = _lastViewedPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fb857a2eae284b31b2eb19ac4abfcaa7
|
||||
timeCreated: 1793141973
|
||||
@@ -0,0 +1,91 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using Code.Game.Gameplay.Player;
|
||||
using Code.OfficeGame.BattleMode.Timeline;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using KinematicCharacterController;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Code.OfficeGame.BattleMode.Actions.HoloCopy
|
||||
{
|
||||
public class HoloCop : MonoBehaviour
|
||||
{
|
||||
private Func<HoloCop, float, bool> _action;
|
||||
|
||||
[SerializeField] private MovementController movementController;
|
||||
[SerializeField] private KinematicCharacterMotor motor;
|
||||
[SerializeField] private Animator animator;
|
||||
|
||||
public MovementController Controller => movementController;
|
||||
public Animator Animator => animator;
|
||||
|
||||
private Vector3 _initialPosition;
|
||||
private Quaternion _initialRotation;
|
||||
private int _initialAnimationState;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
animator = GetComponentInChildren<Animator>();
|
||||
movementController = GetComponent<MovementController>();
|
||||
motor = GetComponent<KinematicCharacterMotor>();
|
||||
}
|
||||
|
||||
private void Snapshot()
|
||||
{
|
||||
_initialPosition = motor.transform.position;
|
||||
_initialRotation = motor.transform.rotation;
|
||||
|
||||
_initialAnimationState = animator.GetCurrentAnimatorStateInfo(0).shortNameHash;
|
||||
}
|
||||
|
||||
private void ReturnToSnapshot()
|
||||
{
|
||||
motor.SetPositionAndRotation(_initialPosition, _initialRotation);
|
||||
|
||||
animator.Play(_initialAnimationState, 0);
|
||||
}
|
||||
|
||||
public async UniTask Simulate(Func<HoloCop, float, bool> action, CancellationToken ctx)
|
||||
{
|
||||
_action = action;
|
||||
float accumulator = 0f;
|
||||
|
||||
Snapshot();
|
||||
|
||||
try
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
|
||||
while (!ctx.IsCancellationRequested)
|
||||
{
|
||||
await UniTask.Yield(PlayerLoopTiming.Update, ctx);
|
||||
|
||||
accumulator += Time.unscaledDeltaTime;
|
||||
|
||||
while (accumulator >= BattleTimeline.TickDelta)
|
||||
{
|
||||
accumulator -= BattleTimeline.TickDelta;
|
||||
|
||||
if (_action == null) return;
|
||||
|
||||
bool result = _action(this, BattleTimeline.TickDelta);
|
||||
|
||||
animator.Update(BattleTimeline.TickDelta);
|
||||
|
||||
Physics.Simulate(BattleTimeline.TickDelta);
|
||||
Physics.SyncTransforms();
|
||||
|
||||
if (result) ReturnToSnapshot();
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
ReturnToSnapshot();
|
||||
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b4067e559c4d4556a335b4c507f9702f
|
||||
timeCreated: 1793142036
|
||||
@@ -1,4 +1,6 @@
|
||||
using System.Threading;
|
||||
using Code.Game.OfficeGame.BattleMode;
|
||||
using Code.Infrastructure.Camera;
|
||||
using Code.OfficeGame.BattleMode.UI;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Attributes;
|
||||
@@ -9,6 +11,7 @@ namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
public class PlayerControlledTimelineActor : EntityTimelineActor
|
||||
{
|
||||
[Inject] private BattleActionDecisionPanel _battleActionDecisionPanel;
|
||||
[Inject] private CameraStateMachine _cameraStateMachine;
|
||||
|
||||
public override async UniTask DecideAction(CancellationToken ctx)
|
||||
{
|
||||
@@ -22,6 +25,8 @@ namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
{
|
||||
Cursor.lockState = CursorLockMode.Confined;
|
||||
|
||||
((CameraBattleModeState)_cameraStateMachine.CurrentBaseState).battleDeciding = true;
|
||||
|
||||
await _battleActionDecisionPanel.Open(ctx);
|
||||
|
||||
decidedAction = await _battleActionDecisionPanel.GetDecision(ctx);
|
||||
@@ -31,6 +36,8 @@ namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
{
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
|
||||
((CameraBattleModeState)_cameraStateMachine.CurrentBaseState).battleDeciding = false;
|
||||
|
||||
await _battleActionDecisionPanel.Close(ctx);
|
||||
|
||||
decision = await BattleActions[decidedAction].DecideAction();
|
||||
@@ -42,6 +49,7 @@ namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SetCurrentAction(BattleActions[decidedAction], decision.FrameDuration);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
{
|
||||
public class PlayerDecisionMarker : MonoBehaviour
|
||||
{
|
||||
public bool locked;
|
||||
public void Toggle(bool onOff)
|
||||
{
|
||||
locked = false;
|
||||
gameObject.SetActive(onOff);
|
||||
}
|
||||
|
||||
public void MoveMarker(Vector3 position)
|
||||
{
|
||||
if (locked) return;
|
||||
|
||||
transform.position = position;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6dcb7d02c6a54c0a9758279c38260aef
|
||||
timeCreated: 1793143524
|
||||
@@ -0,0 +1,13 @@
|
||||
using Code.Infrastructure.Generators;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.OfficeGame.BattleMode.Actions.Player
|
||||
{
|
||||
// TODO Эта штука просто загружена вместе с конфигом
|
||||
[Config("Configs/PlayerDecisionMarker")]
|
||||
[CreateAssetMenu(fileName = "PlayerDecisionMarkerConfig", menuName = "Configs/PlayerDecisionMarker")]
|
||||
public class PlayerDecisionMarkerConfig : ScriptableObject
|
||||
{
|
||||
public PlayerDecisionMarker PlayerDecisionMarkerPrefab;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ae7c4b6492048df8d5bbb43e7909af0
|
||||
timeCreated: 1793143622
|
||||
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using Code.Infrastructure.Camera;
|
||||
using Code.Infrastructure.Camera.CameraStates;
|
||||
using Code.Infrastructure.Input;
|
||||
@@ -11,15 +10,18 @@ namespace Code.Game.OfficeGame.BattleMode
|
||||
[Infrastructure.Generators.State(typeof(CameraMode), typeof(CameraStateMachineContext), ManualInherit = true)]
|
||||
public partial class CameraBattleModeState : BaseCameraState
|
||||
{
|
||||
public bool battleDeciding = false;
|
||||
private bool _rightClickHold = false;
|
||||
|
||||
private Vector2 _mouseDelta;
|
||||
private Vector2 _rotation = Vector2.zero;
|
||||
private Vector2 _movement;
|
||||
private float _verticalMovement; // Если захотите добавить Space / Ctrl как в Minecraft
|
||||
|
||||
[Header("Look Settings")] private float _sensitivityX = 0.1f;
|
||||
private float _sensitivityX = 0.1f;
|
||||
private float _sensitivityY = 0.1f;
|
||||
|
||||
[Header("Spectator Flight Settings")] private float _moveSpeed = 12f;
|
||||
private float _moveSpeed = 12f;
|
||||
private float _cameraRadius = 0.25f; // Должен быть больше nearClipPlane камеры (обычно 0.05 - 0.1)
|
||||
private LayerMask _obstacleMask = ~0; // По умолчанию все слои (настройте, исключив триггеры/юнитов)
|
||||
|
||||
@@ -55,6 +57,15 @@ namespace Code.Game.OfficeGame.BattleMode
|
||||
(int)ActionMappings.BattleMode,
|
||||
(int)BattleModeActions.Watchment,
|
||||
LookCancelled);
|
||||
|
||||
Context.InputService.BindActionPerformed(
|
||||
(int)ActionMappings.BattleMode,
|
||||
(int)BattleModeActions.RightClick,
|
||||
RightClickPerformed);
|
||||
Context.InputService.BindActionCancelled(
|
||||
(int)ActionMappings.BattleMode,
|
||||
(int)BattleModeActions.RightClick,
|
||||
RightClickCancelled);
|
||||
|
||||
var camTransform = Context.cameraLoadedData.Camera.transform;
|
||||
|
||||
@@ -102,6 +113,9 @@ namespace Code.Game.OfficeGame.BattleMode
|
||||
|
||||
private void LookCancelled(InputAction.CallbackContext obj) => _mouseDelta = Vector2.zero;
|
||||
private void LookPerformed(InputAction.CallbackContext obj) => _mouseDelta = obj.ReadValue<Vector2>();
|
||||
|
||||
private void RightClickCancelled(InputAction.CallbackContext obj) => _rightClickHold = false;
|
||||
private void RightClickPerformed(InputAction.CallbackContext obj) => _rightClickHold = true;
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
@@ -112,15 +126,15 @@ namespace Code.Game.OfficeGame.BattleMode
|
||||
var camTransform = Context.cameraLoadedData.Camera.transform;
|
||||
float dt = Time.unscaledDeltaTime;
|
||||
|
||||
// --- 1. СВОБОДНЫЙ ОБЗОР ОТ ПЕРВОГО ЛИЦА (Yaw + Pitch) ---
|
||||
_rotation.x += _mouseDelta.x * _sensitivityX;
|
||||
_rotation.y -= _mouseDelta.y * _sensitivityY;
|
||||
_rotation.y = Mathf.Clamp(_rotation.y, -89.9f, 89.9f);
|
||||
if (!(battleDeciding && !_rightClickHold))
|
||||
{
|
||||
_rotation.x += _mouseDelta.x * _sensitivityX;
|
||||
_rotation.y -= _mouseDelta.y * _sensitivityY;
|
||||
_rotation.y = Mathf.Clamp(_rotation.y, -89.9f, 89.9f);
|
||||
|
||||
// Используем мировое вращение, чтобы камера всегда держала горизонт ровно (без завала Roll)
|
||||
camTransform.rotation = Quaternion.Euler(_rotation.y, _rotation.x, 0f);
|
||||
|
||||
// --- 2. ВЕКТОР ПОЛЁТА КАК В CS / MINECRAFT SPECTATOR ---
|
||||
camTransform.rotation = Quaternion.Euler(_rotation.y, _rotation.x, 0f);
|
||||
}
|
||||
|
||||
Vector3 wishDir = camTransform.forward * _movement.y + camTransform.right * _movement.x;
|
||||
|
||||
// Если добавите кнопки вверх/вниз (Space/Ctrl), раскомментируйте:
|
||||
@@ -131,10 +145,8 @@ namespace Code.Game.OfficeGame.BattleMode
|
||||
|
||||
Vector3 currentPos = camTransform.position;
|
||||
|
||||
// --- 3. ВЫТАЛКИВАНИЕ (Если камера начала кадр внутри стены или двери) ---
|
||||
currentPos = Depenetrate(currentPos);
|
||||
|
||||
// --- 4. ДВИЖЕНИЕ И СКОЛЬЖЕНИЕ ПО СТЕНАМ И УГЛАМ ---
|
||||
if (wishDir.sqrMagnitude > 0.0001f)
|
||||
{
|
||||
Vector3 displacement = wishDir * (_moveSpeed * dt);
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace Code.OfficeGame.BattleMode.Timeline
|
||||
_entities = entities;
|
||||
_currentBattleFrame.Value = 0;
|
||||
|
||||
// Контейнер подписок на время текущего боя (автоматически очистится при выходе из метода)
|
||||
_battleSubscriptions = new DisposableBag();
|
||||
|
||||
try
|
||||
@@ -42,7 +41,6 @@ namespace Code.OfficeGame.BattleMode.Timeline
|
||||
entity.OnActionSet
|
||||
.Subscribe(action =>
|
||||
{
|
||||
// Переводим длительность действия в абсолютный кадр окончания на таймлайне
|
||||
action.Frame += _currentBattleFrame.Value;
|
||||
_timelinePanel.SetAction(action);
|
||||
})
|
||||
@@ -72,14 +70,14 @@ namespace Code.OfficeGame.BattleMode.Timeline
|
||||
}
|
||||
}
|
||||
|
||||
private async UniTask<List<EntityTimelineActor>> PlayTimelineUntilPause(CancellationToken ct)
|
||||
private async UniTask<List<EntityTimelineActor>> PlayTimelineUntilPause(CancellationToken ctx)
|
||||
{
|
||||
float accumulator = 0f;
|
||||
var readyEntities = new List<EntityTimelineActor>();
|
||||
|
||||
while (readyEntities.Count == 0 && !ct.IsCancellationRequested)
|
||||
while (readyEntities.Count == 0 && !ctx.IsCancellationRequested)
|
||||
{
|
||||
await UniTask.Yield(PlayerLoopTiming.Update, ct);
|
||||
await UniTask.Yield(PlayerLoopTiming.Update, ctx);
|
||||
|
||||
accumulator += Time.unscaledDeltaTime;
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@ namespace Code.Infrastructure.Input
|
||||
Watchment,
|
||||
Select,
|
||||
Confirm,
|
||||
Cancel
|
||||
Cancel,
|
||||
RightClick
|
||||
}
|
||||
// Написать, чтобы розлин сама писала этот енам
|
||||
public enum DebugActions
|
||||
|
||||
@@ -254,6 +254,16 @@
|
||||
"interactions": "",
|
||||
"initialStateCheck": false,
|
||||
"priority": 0
|
||||
},
|
||||
{
|
||||
"name": "RightClick",
|
||||
"type": "Button",
|
||||
"id": "75b5984a-da57-465e-9c96-416a5c9c103d",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false,
|
||||
"priority": 0
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
@@ -410,6 +420,17 @@
|
||||
"action": "Cancel",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "a76c6db1-b7f8-425a-bec0-ff79a6c05068",
|
||||
"path": "<Mouse>/rightButton",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "RightClick",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2ae581d214df74a2e9ec5edebcb55c89
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,138 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3917113254443311522
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1507626928637554511}
|
||||
- component: {fileID: 8810757237738666909}
|
||||
m_Layer: 0
|
||||
m_Name: PlayerDecisionMarker
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1507626928637554511
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3917113254443311522}
|
||||
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:
|
||||
- {fileID: 2632513295195526779}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &8810757237738666909
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3917113254443311522}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6dcb7d02c6a54c0a9758279c38260aef, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.OfficeGame.BattleMode.Actions.Player.PlayerDecisionMarker
|
||||
locked: 0
|
||||
--- !u!1 &5211050770166458882
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2632513295195526779}
|
||||
- component: {fileID: 3491484774049451729}
|
||||
- component: {fileID: 6847923867834126189}
|
||||
m_Layer: 0
|
||||
m_Name: Cylinder
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2632513295195526779
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5211050770166458882}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.05, z: 0}
|
||||
m_LocalScale: {x: 1, y: 0.1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1507626928637554511}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3491484774049451729
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5211050770166458882}
|
||||
m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &6847923867834126189
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5211050770166458882}
|
||||
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_MaskInteraction: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8904ae2f63af24f35a919b55d9f3e577
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,15 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9ae7c4b6492048df8d5bbb43e7909af0, type: 3}
|
||||
m_Name: PlayerDecisionMarkerConfig
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.OfficeGame.BattleMode.Actions.Player.PlayerDecisionMarkerConfig
|
||||
PlayerDecisionMarkerPrefab: {fileID: 8810757237738666909, guid: 8904ae2f63af24f35a919b55d9f3e577, type: 3}
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5ff8bf03d4ecf4809a23c66411ca6f5a
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1261,6 +1261,148 @@ BoxCollider:
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &5865940515695367313
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 342766060722697506}
|
||||
- component: {fileID: 6894003323627830512}
|
||||
- component: {fileID: 1067183535363547161}
|
||||
- component: {fileID: 315944951666586202}
|
||||
- component: {fileID: 4168235549514175667}
|
||||
m_Layer: 0
|
||||
m_Name: HoloCop
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!4 &342766060722697506
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5865940515695367313}
|
||||
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:
|
||||
- {fileID: 3186131212207065069}
|
||||
m_Father: {fileID: 4102848286648065809}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &6894003323627830512
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5865940515695367313}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b4067e559c4d4556a335b4c507f9702f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.OfficeGame.BattleMode.Actions.HoloCopy.HoloCop
|
||||
movementController: {fileID: 4168235549514175667}
|
||||
motor: {fileID: 315944951666586202}
|
||||
animator: {fileID: 8851620147763273111}
|
||||
--- !u!136 &1067183535363547161
|
||||
CapsuleCollider:
|
||||
m_ObjectHideFlags: 8
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5865940515695367313}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.2
|
||||
m_Height: 1.35
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.675, z: 0}
|
||||
--- !u!114 &315944951666586202
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5865940515695367313}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4d1bc5515e3ab954e80599c538834774, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::KinematicCharacterController.KinematicCharacterMotor
|
||||
Capsule: {fileID: 1067183535363547161}
|
||||
CapsuleRadius: 0.2
|
||||
CapsuleHeight: 1.35
|
||||
CapsuleYOffset: 0.675
|
||||
CapsulePhysicsMaterial: {fileID: 0}
|
||||
GroundDetectionExtraDistance: 0
|
||||
MaxStableSlopeAngle: 60
|
||||
StableGroundLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
DiscreteCollisionEvents: 0
|
||||
StepHandling: 1
|
||||
MaxStepHeight: 0.5
|
||||
AllowSteppingWithoutStableGrounding: 0
|
||||
MinRequiredStepDepth: 0
|
||||
LedgeAndDenivelationHandling: 1
|
||||
MaxStableDistanceFromLedge: 0
|
||||
MaxVelocityForLedgeSnap: 0
|
||||
MaxStableDenivelationAngle: 180
|
||||
InteractiveRigidbodyHandling: 1
|
||||
RigidbodyInteractionType: 0
|
||||
SimulatedCharacterMass: 1
|
||||
PreserveAttachedRigidbodyMomentum: 1
|
||||
HasPlanarConstraint: 0
|
||||
PlanarConstraintAxis: {x: 0, y: 0, z: 1}
|
||||
MaxMovementIterations: 5
|
||||
MaxDecollisionIterations: 1
|
||||
CheckMovementInitialOverlaps: 1
|
||||
KillVelocityWhenExceedMaxMovementIterations: 1
|
||||
KillRemainingMovementWhenExceedMaxMovementIterations: 1
|
||||
--- !u!114 &4168235549514175667
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5865940515695367313}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 45d9830d22b54832ade96a92f599643a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Game.Gameplay.Player.PlayerMovementController
|
||||
Motor: {fileID: 315944951666586202}
|
||||
Freeze: 0
|
||||
MaxStableMoveSpeed: 3
|
||||
StableMovementSharpness: 15
|
||||
OrientationSharpness: 10
|
||||
OrientationMethod: 0
|
||||
MaxAirMoveSpeed: 15
|
||||
AirAccelerationSpeed: 15
|
||||
Drag: 0.1
|
||||
BonusOrientationMethod: 0
|
||||
BonusOrientationSharpness: 1
|
||||
BonusOrientationGravitySharpness: 0
|
||||
Gravity: {x: 0, y: -30, z: 0}
|
||||
IgnoredColliders: []
|
||||
--- !u!1 &6137683549794358498
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1751,6 +1893,7 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 257380888280300741}
|
||||
- {fileID: 8374810763302122734}
|
||||
- {fileID: 342766060722697506}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!136 &6939642111494274883
|
||||
@@ -1931,6 +2074,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: a1803413768b4cf990d25732721300ea, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.OfficeGame.BattleMode.Actions.Attacks.BattleActionPlayerAttackMMA
|
||||
holoCop: {fileID: 6894003323627830512}
|
||||
animator: {fileID: 2511146916935397012}
|
||||
--- !u!114 &4165226838920277257
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1972,6 +2117,121 @@ MonoBehaviour:
|
||||
Collider: {fileID: 2873132192154572844}
|
||||
- PartType: 3
|
||||
Collider: {fileID: 1759856401891365470}
|
||||
--- !u!1001 &3151904053883985926
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 342766060722697506}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 80.4
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 80.4
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 80.4
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_ConstrainProportionsScale
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -6452266432751415832, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2321449255681548753, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 0.87
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2321449255681548753, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 0.87
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2321449255681548753, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 0.87
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2321449255681548753, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_ConstrainProportionsScale
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Player_M1_1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5797954692085622370, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Player_M1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5866666021909216657, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_Controller
|
||||
value:
|
||||
objectReference: {fileID: 9100000, guid: 0a88085cbabf38ae084dd83fcdd5e566, type: 2}
|
||||
- target: {fileID: 9148548460791437811, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
--- !u!4 &3186131212207065069 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
m_PrefabInstance: {fileID: 3151904053883985926}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!95 &8851620147763273111 stripped
|
||||
Animator:
|
||||
m_CorrespondingSourceObject: {fileID: 5866666021909216657, guid: 22f5406d0dd3e496dab66400ad658fb8, type: 3}
|
||||
m_PrefabInstance: {fileID: 3151904053883985926}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &8337279434272854789
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -22,6 +22,12 @@ MonoBehaviour:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
PlayerDecisionMarkerConfig:
|
||||
m_AssetGUID: 5ff8bf03d4ecf4809a23c66411ca6f5a
|
||||
m_SubObjectName:
|
||||
m_SubObjectType:
|
||||
m_SubObjectGUID:
|
||||
m_EditorAssetChanged: 0
|
||||
ParticleInfo: Particles
|
||||
InputServiceConfig:
|
||||
m_AssetGUID: e92086276d9b32213abd64903ad4b730
|
||||
|
||||
Reference in new issue
Block a user