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(); } } private void Update() { } private void FixedUpdate() { } #endregion #region 手持物品 private FHandItem HandItem; private bool IsChangeItemIng; public async FTask UseItem(int configId, List 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(); // await itemView.InitShow(handItem); // Unity.ModelAsset.PlayerAnimator.OnUseItem(itemView); // } // } // // var stateView = Player.GetComponent(); // 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(); ModelAsset.SetPlayer(FppLook); } #endregion } }