using System; using System.Collections; using System.Collections.Generic; using ECM2; using ECM2.Examples.FirstPerson; using Fantasy; using NBF.Fishing2; using NBF.Utils; using UnityEngine; using UnityEngine.InputSystem; namespace NBF { public partial class FPlayer : MonoService { public Transform Root; public Transform Eye; public Transform FppLook; public Transform IK; public PlayerModelAsset ModelAsset; public CharacterMovement Character; public FirstPersonCharacter FirstPerson; public GameObject ModelGameObject { get; set; } public PlayerAnimator Animator; public FPlayerData Data { get; private set; } public readonly List Tackles = new List(); public FRod HandTackle { get; private set; } protected override void OnAwake() { Character = gameObject.GetComponent(); FirstPerson = gameObject.GetComponent(); Animator = gameObject.AddComponent(); Data = FPlayerData.Instance; transform.localPosition = new Vector3(484, 1, 422); } private void Start() { AddInputEvent(); CreatePlayerModel(); } private void Update() { UpdateMove(); } private void OnDestroy() { RemoveInputEvent(); } #region 角色模型 private void CreatePlayerModel() { var modelObject = PrefabsHelper.CreatePlayer(Root, "Human_Male"); modelObject.transform.localPosition = Vector3.zero; ModelGameObject = modelObject; ModelAsset = modelObject.GetComponent(); Animator.SetModelAsset(this); } #endregion #region 使用物品 public IEnumerator UseItem(ItemInfo item) { var itemType = item?.ConfigId.GetItemType(); if (itemType == ItemType.Rod) { //判断旧的是否要收回 if (HandTackle != null) { yield return HandTackle.Destroy(); Tackles.Remove(HandTackle); HandTackle = null; } HandTackle = item.Config.InstantiateAndComponent(SceneSettings.Instance.GearNode, Vector3.zero, Quaternion.identity); yield return HandTackle.InitRod(this, item); Tackles.Add(HandTackle); } } #endregion } }