137 lines
3.5 KiB
C#
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
|
|
}
|
|
} |