aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/PlayerManager.cs
blob: 25b16f073c2b6b0d162ed0867223c3de9f629070 (plain) (blame)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections;
using System.Collections.Generic;
using DS;
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
    private InputHandler _inputHandler;
    private Animator _animator;
    
    public bool isInteracting;

    private CameraHandler _cameraHandler;   // 相机处理器单例引用
    private PlayerLocomotion _playerLocomotion;

    
    private void Awake()
    {
        // 获取相机处理器的单例引用,用于在 FixedUpdate 中驱动相机跟随与旋转
        _cameraHandler = CameraHandler.singleton;
    }
    private void Start()
    {
        _inputHandler = GetComponent<InputHandler>();
        _animator = GetComponentInChildren<Animator>();
        _playerLocomotion = GetComponent<PlayerLocomotion>();
    }

    private void Update()
    {
        float delta = Time.deltaTime;
        
        isInteracting = _animator.GetBool("isInteracting");
        _inputHandler.rollFlag = false;
        _inputHandler.sprintFlag = false;

        _playerLocomotion.isSprinting = _inputHandler.b_Input;
        // 处理输入(读取水平/垂直输入值)
        _inputHandler.TickInput(delta);
        _playerLocomotion.UpdateCharacterMovement(delta);
        _playerLocomotion.HandleRollingAndSpringting(delta);
   
    }
    
    private void FixedUpdate()
    {
        float delta = Time.fixedDeltaTime; // 固定时间步长,确保物理一致性

        if (_cameraHandler != null)
        {
            // 让相机跟随目标(通常是玩家角色)
            _cameraHandler.FollowTarget(delta);
            // 根据鼠标/摇杆输入旋转相机
            _cameraHandler.HandleCameraRotation(delta, _inputHandler.mouseX,_inputHandler.mouseY);
        }
    }
}