修改
This commit is contained in:
150
Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
Normal file
150
Assets/Scripts/Fishing/New/View/Player/PlayerView.cs
Normal file
@@ -0,0 +1,150 @@
|
||||
using Fantasy.Async;
|
||||
using Fantasy.Entitas;
|
||||
using Fantasy.Entitas.Interface;
|
||||
using NBF.Fishing2;
|
||||
using NBF.Utils;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public class PlayerView : Entity
|
||||
{
|
||||
public Player Player { get; private set; }
|
||||
|
||||
public PlayerUnityComponent Unity { get; private set; }
|
||||
|
||||
#region 生命周期
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
Player = GetParent<Player>();
|
||||
var gameObject = PrefabsHelper.CreatePlayer(SceneSettings.Instance.Node);
|
||||
Unity = gameObject.GetComponent<PlayerUnityComponent>();
|
||||
Unity.Player = Player;
|
||||
CreatePlayerModel();
|
||||
if (Player.IsSelf)
|
||||
{
|
||||
CameraManager.Instance.SetFppLook(Unity);
|
||||
}
|
||||
|
||||
Unity.transform.localPosition = new Vector3(484, 1, 422);
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
}
|
||||
|
||||
public void LateUpdate()
|
||||
{
|
||||
Player.EyeAngle = GameUtils.GetVerticalAngle(Unity.transform, Unity.FppLook);
|
||||
}
|
||||
|
||||
public void Destroy()
|
||||
{
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 模型创建
|
||||
|
||||
private void CreatePlayerModel()
|
||||
{
|
||||
var modelObject = PrefabsHelper.CreatePlayer(Unity.Root, "Human_Male");
|
||||
modelObject.transform.localPosition = new Vector3(0, 1, 0);
|
||||
Unity.ModelAsset = modelObject.GetComponent<PlayerModelAsset>();
|
||||
Unity.ModelAsset.SetPlayer(Unity.FppLook);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 物品切换
|
||||
|
||||
public async FTask ChangeItem(PlayerItemChangeEvent playerStateChangeEvent)
|
||||
{
|
||||
var prevItem = playerStateChangeEvent.PrevItem;
|
||||
var currItem = playerStateChangeEvent.Item;
|
||||
if (Player.IsChangeItemIng) return;
|
||||
Player.IsChangeItemIng = true;
|
||||
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<PlayerItemRodView>();
|
||||
await itemView.InitShow(handItem);
|
||||
Unity.ModelAsset.PlayerAnimator.OnUseItem(itemView);
|
||||
}
|
||||
}
|
||||
|
||||
Player.IsChangeItemIng = false;
|
||||
}
|
||||
|
||||
#region 使用物品
|
||||
|
||||
public async FTask UnUseItem(PlayerItem item)
|
||||
{
|
||||
if (item == null) return;
|
||||
if (Player.IsChangeItemIng) return;
|
||||
Player.IsChangeItemIng = true;
|
||||
await UnUseItemConfirm(item);
|
||||
Player.IsChangeItemIng = false;
|
||||
}
|
||||
|
||||
private async FTask UnUseItemConfirm(PlayerItem item)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
Unity.ModelAsset.PlayerAnimator.OnUnUseItem();
|
||||
await FTask.Wait(Scene, 100);
|
||||
}
|
||||
|
||||
Player.ReleaseItem(item);
|
||||
await FTask.Wait(Scene, 450);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class PlayerViewAwakeSystem : AwakeSystem<PlayerView>
|
||||
{
|
||||
protected override void Awake(PlayerView self)
|
||||
{
|
||||
self.Awake();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewDestroySystem : DestroySystem<PlayerView>
|
||||
{
|
||||
protected override void Destroy(PlayerView self)
|
||||
{
|
||||
self.Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewUpdateSystem : UpdateSystem<PlayerView>
|
||||
{
|
||||
protected override void Update(PlayerView self)
|
||||
{
|
||||
self.Update();
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerViewLateUpdateSystem : LateUpdateSystem<PlayerView>
|
||||
{
|
||||
protected override void LateUpdate(PlayerView self)
|
||||
{
|
||||
self.LateUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user