Files
Fishing2/Assets/Scripts/Fishing/Player/Player.cs
2026-04-29 16:39:15 +08:00

137 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using ECM2;
using ECM2.Examples.FirstPerson;
using Fantasy.Async;
using UnityEngine;
namespace NBF
{
public class Player : MonoBehaviour
{
[Header("角色参数")] public float EyeAngle;
public bool IsGrounded;
public float Speed;
public float RotationSpeed;
public Vector2 MoveInput;
public bool Run;
[Header("角色节点")] public Transform Root;
public Transform Eye;
public Transform FppLook;
public Transform IK;
[Header("角色控制")] public PlayerModelAsset ModelAsset;
public CharacterMovement Character;
public FirstPersonCharacter FirstPerson;
[Header("视角相关")] public float MouseSensitivity = 0.1f;
[Space(15f)] public bool invertLook = true;
public float minPitch = -60f;
public float maxPitch = 60f;
public bool IsLureRod => false;
public bool IsSelf;
#region
private void Awake()
{
}
private void Start()
{
CreatePlayerModel();
if (IsSelf)
{
gameObject.AddComponent<PlayerInput>();
}
}
private void Update()
{
}
private void FixedUpdate()
{
}
#endregion
#region
private FHandItem HandItem;
private bool IsChangeItemIng;
public async FTask UseItem(int configId, List<int> bindItems)
{
if (IsChangeItemIng) return;
IsChangeItemIng = true;
if (HandItem != null)
{
await UnUseItem();
}
// ModelAsset.PlayerAnimator.OnUseItem(itemView);
// if (currItem == null)
// {
// //收起物品
// await UnUseItem(prevItem);
// }
// else
// {
// // 先收起旧的物品
// await UnUseItemConfirm(prevItem);
// var handItem = Player.HandItem;
// //拿起新物品
// var itemType = handItem.ConfigID.GetItemType();
// if (itemType == ItemType.Rod)
// {
// var itemView = handItem.GetOrAddComponent<PlayerItemView>();
// await itemView.InitShow(handItem);
// Unity.ModelAsset.PlayerAnimator.OnUseItem(itemView);
// }
// }
//
// var stateView = Player.GetComponent<PlayerStateView>();
// if (stateView != null && stateView.CurrentStateView is PlayerStageViewIdle playerStageViewIdle)
// {
// playerStageViewIdle.TakeLine();
// }
IsChangeItemIng = false;
}
public async FTask UnUseItem()
{
if (HandItem != null)
{
ModelAsset.PlayerAnimator.OnUnUseItem();
await FTask.Wait(Game.Main, 100);
}
Destroy(HandItem.gameObject);
HandItem = null;
}
#endregion
#region
private void CreatePlayerModel()
{
var modelObject = PrefabsHelper.CreatePlayer(Root, "Human_Male");
modelObject.transform.localPosition = Vector3.zero;
ModelAsset = modelObject.GetComponent<PlayerModelAsset>();
ModelAsset.SetPlayer(FppLook);
}
#endregion
}
}