142 lines
3.5 KiB
C#
142 lines
3.5 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2020-09-02
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "Stat_IdleAction" company="Kimch"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
namespace G
|
|
{
|
|
/// <summary>
|
|
/// 受击
|
|
/// </summary>
|
|
public class Stat_HitAction : Stat_BaseAction
|
|
{
|
|
private bool m_isDownHigher;
|
|
|
|
private float f_risefactor;
|
|
|
|
private bool m_bAnimEnd = true;
|
|
|
|
public Stat_HitAction(Stat_StateManager statMgr)
|
|
: base(statMgr)
|
|
{
|
|
}
|
|
|
|
public override bool Enter(Dictionary<string, object> param, bool clearDelegates = false)
|
|
{
|
|
base.Enter(param, clearDelegates);
|
|
m_char.StopAnimation();
|
|
if (param.ContainsKey("down"))
|
|
{
|
|
//m_curAniLength = m_char.PlayAnimation("behitdown");
|
|
m_isDownHigher = false;
|
|
}
|
|
else if (param.ContainsKey("down_hight"))
|
|
{
|
|
//m_curAniLength = m_char.PlayAnimation("behitfly");
|
|
m_char.transform.Rotate(0f, Random.Range(0, 360), 0f);
|
|
m_isDownHigher = false;
|
|
}
|
|
else if (param.ContainsKey("down_higher"))
|
|
{
|
|
//m_curAniLength = m_char.PlayAnimation("behitdown");
|
|
m_char.transform.Rotate(0f, Random.Range(0, 360), 0f);
|
|
m_isDownHigher = true;
|
|
f_risefactor = 3f;
|
|
}
|
|
else
|
|
{
|
|
if (!param.ContainsKey("higher_hit"))
|
|
{
|
|
return false;
|
|
}
|
|
//m_curAniLength = m_char.PlayAnimation("behitdown");
|
|
m_isDownHigher = true;
|
|
f_risefactor = 0.6f;
|
|
}
|
|
if (/*!LevelData.IsPVPMode &&*/ m_char.IsPlayer())
|
|
{
|
|
m_char.invincible = true;
|
|
}
|
|
m_bAnimEnd = false;
|
|
if (!m_isDownHigher)
|
|
{
|
|
m_statMgr.AddTimer(m_curAniLength, AnimationEnd_CB);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private bool AnimationEnd_CB(object[] param)
|
|
{
|
|
m_bAnimEnd = true;
|
|
return SetCurActionState(enStat.STAT_ACTION_IDLE);
|
|
}
|
|
|
|
public override bool Exit()
|
|
{
|
|
if (/*!LevelData.IsPVPMode &&*/ m_char.IsPlayer())
|
|
{
|
|
m_char.invincible = false;
|
|
}
|
|
return base.Exit();
|
|
}
|
|
|
|
public override bool UpdateDelegate()
|
|
{
|
|
if (m_isDownHigher)
|
|
{
|
|
m_char.transform.position += Vector3.up * f_risefactor * Time.deltaTime;
|
|
f_risefactor -= Time.deltaTime * 5f;
|
|
Vector3 position = m_char.transform.position;
|
|
if (position.y < 0f)
|
|
{
|
|
Transform transform = m_char.transform;
|
|
Vector3 position2 = m_char.transform.position;
|
|
float x = position2.x;
|
|
Vector3 position3 = m_char.transform.position;
|
|
transform.position = new Vector3(x, 0f, position3.z);
|
|
m_isDownHigher = false;
|
|
f_risefactor = 0f;
|
|
m_bAnimEnd = true;
|
|
SetCurActionState(enStat.STAT_ACTION_IDLE);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override bool CanTransition(enStat stat)
|
|
{
|
|
//if (MonoInstancePool.getInstance<GuideLocalData>().curGuideModule == 0 && stat > enStat.STAT_ACTION_SKILL && stat < enStat.STAT_ACTION_SKILL_MAX)
|
|
//{
|
|
// return true;
|
|
//}
|
|
bool result = false;
|
|
if (m_bAnimEnd || stat == enStat.STAT_ACTION_DEAD)
|
|
{
|
|
result = true;
|
|
}
|
|
if (stat == enStat.STAT_ACTION_CHACKLES)
|
|
{
|
|
result = true;
|
|
}
|
|
if (stat == enStat.STAT_ACTION_HIT && !m_isDownHigher)
|
|
{
|
|
m_char.StopAnimation();
|
|
result = true;
|
|
}
|
|
if (stat == enStat.STAT_ACTION_XULI_HIT)
|
|
{
|
|
result = true;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
}
|