AkiraPixelWind/Assets/Scripts/Main/CustomsComponent/MainPlayerComponent.cs

142 lines
3.8 KiB
C#
Raw Normal View History

2023-01-02 23:28:14 +08:00
using Axibug.Runtime;
using Bright.Serialization;
using System.IO;
using Game.Config;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using static Axibug.Utility;
using UnityEditor;
using Axibug.Resources;
using Axibug;
using Axibug.Event;
2023-01-02 23:28:14 +08:00
namespace Game
{
public class MainPlayerComponent : GameComponent
{
2023-01-06 00:14:59 +08:00
public Transform MainCamNode;
2023-01-02 23:28:14 +08:00
public Transform CamPos;
2023-01-05 18:32:58 +08:00
public MainRole Player;
//Rigidbody mRigidbody;
2023-01-02 23:28:14 +08:00
public bool bLoadFinish { get; private set; } = false;
2023-01-05 18:32:58 +08:00
public bool InGame = false;
2023-01-02 23:28:14 +08:00
private void OnEnable()
{
2023-01-06 00:14:59 +08:00
MainCamNode = transform.Find("MainCamNode");
CamPos = MainCamNode.Find("CamPos");
2023-01-05 18:32:58 +08:00
InGame = false;
AppEntry.Event.Subscribe(MainPlayerOnceAttackEventArgs.EventId, OnMainPlayerInAttackEventArgs);
}
private void OnDisable()
{
AppEntry.Event.Unsubscribe(MainPlayerOnceAttackEventArgs.EventId, OnMainPlayerInAttackEventArgs);
2023-01-05 18:32:58 +08:00
}
public void ReSetMainPlayer()
{
Player = null;
2023-01-02 23:28:14 +08:00
}
2023-01-05 18:32:58 +08:00
2023-01-02 23:28:14 +08:00
void Start()
{
}
2023-01-05 18:32:58 +08:00
void Update()
{
Update_MoveForInput();
}
2023-01-02 23:28:14 +08:00
public void LoadPlayer()
{
bLoadFinish = false;
2023-01-05 18:32:58 +08:00
Player = GamePlayEntry.RoleMgr.CreateMainRole();
2023-01-02 23:28:14 +08:00
2023-01-05 18:32:58 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetMainCamera();
2023-01-02 23:28:14 +08:00
bLoadFinish = true;
}
2023-01-05 18:32:58 +08:00
public void SetMainCamera()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𶯽ű<F0B6AFBD>
MainCamNode.gameObject.AddComponent<CameraShake>();
2023-01-06 00:14:59 +08:00
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Node<64>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MainCamNode.parent = Player.transform;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>MainCamNode<64><65>CamPos<6F><73>
2023-01-05 18:32:58 +08:00
Camera.main.transform.parent = CamPos;
Camera.main.transform.localPosition = Vector3.zero;
Camera.main.transform.localEulerAngles = Vector3.zero;
}
2023-01-02 23:28:14 +08:00
2023-01-05 18:32:58 +08:00
public void Update_MoveForInput()
2023-01-02 23:28:14 +08:00
{
2023-01-05 18:32:58 +08:00
if (!Player) return;
2023-01-05 18:32:58 +08:00
Player.InputV2 = GamePlayEntry.Input.InputV2;
if (GamePlayEntry.Input.Attack
&&
Player.AttackStep != E_ONCEATTACK_STEP.InAttack
)
{
//AxibugLog.Debug("DoAttack");
DoNextMotionAnimeName();
}
}
public void DoNextMotionAnimeName()
{
Player.Anime.BackToIdle();
string AnimeName;
string AtkBoxAnimeName;
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
bool IsEndMotion = false;
//һ<><D2BB>Ҳû<D2B2><C3BB><EFBFBD><EFBFBD>
if (!GamePlayEntry.Input.mInputMotionData.CheckHistoryLastMotion(E_MOTION_TYPE.Attack_1))
{
AnimeName = "Attack_1";
AtkBoxAnimeName = "HorizontalCut_Down";
GamePlayEntry.Input.mInputMotionData.AddMontionKey(E_MOTION_TYPE.Attack_1);
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AnimeName = "Attack_2";
AtkBoxAnimeName = "HorizontalCut_Up";
GamePlayEntry.Input.mInputMotionData.AddMontionKey(E_MOTION_TYPE.Attack_2);
IsEndMotion = true;
}
Player.Anime.SetAttack(AnimeName);
Player.DoAtkBox(AtkBoxAnimeName);
if(IsEndMotion)
GamePlayEntry.Input.mInputMotionData.ClearHistoryMotion();
}
#region <EFBFBD>¼<EFBFBD>
private void OnMainPlayerInAttackEventArgs(object sender, LogicEventArgs e)
{
MainPlayerOnceAttackEventArgs msg = (MainPlayerOnceAttackEventArgs)e;
if (msg == null) throw new GameException("MainPlayerOnceAttackEventArgs is null");
if (msg.RoleID == Player.RoleID)
{
Player.AttackStep = msg.Step;
}
2023-01-02 23:28:14 +08:00
}
2023-01-05 18:32:58 +08:00
#endregion
2023-01-02 23:28:14 +08:00
}
}