2025-05-18 01:04:31 +08:00

251 lines
6.6 KiB
C#

using UnityEngine;
public enum enCharacterType
{
CHAR_TYPE_NONE = 0,
CHAR_TYPE_MYPLAYER = 1,
CHAR_TYPE_ATTENDANT = 2,
CHAR_TYPE_ENEMY = 3,
CHAR_TYPE_BOSS = 4,
CHAR_TYPE_BUILD = 5,
CHAR_TYPE_CONVOY = 6,
CHAR_TYPE_ENEMY_PLAYER = 7,
CHAR_TYPE_ENEMY_ATTENDANT = 8,
CHAR_TYPE_TRAP = 9,
}
namespace G
{
public class NormalAtkBase : MonoBehaviour
{
protected EntityCha m_unit;
protected EntityCha m_target;
protected Transform m_transform;
protected int m_weaponType;
protected AnimationState m_tmpAttack;
protected Transform m_efSwing1;
protected Transform m_efSwingEx1;
protected Transform m_efSwing2;
protected Transform m_efThrust;
protected Transform m_efPlash;
protected Transform m_efpunch;
protected Transform m_efRotFog;
protected Transform[] m_aryStepfog = new Transform[4];
protected Transform[] m_aryChongfog = new Transform[4];
protected Transform[] m_aryThrustfog = new Transform[4];
protected Ef_swing1 m_swingScript;
protected Ef_swing1 m_swingEx1Script;
protected Ef_swing1 m_swingScript2;
protected Ef_swing1 m_thrustScript;
protected Bullet_punch m_punchScript;
public Ef_splash m_splashScript;
public Ef_rotfog m_rotfogScript;
protected string[] ANIM_NAME = new string[5]
{
"attack1",
"attack2",
"attack3",
"attack4",
"attack5"
};
protected string[] EX_ANIM_NAME = new string[5]
{
"1t",
"2t",
"3t",
"4t",
string.Empty
};
private int m_step = -1;
protected int m_totalStep = 5;
private int m_curStepFogCount;
private int m_curThrustFogCount;
public enCharacterType m_chaType;
public int myStep
{
set
{
m_step = value;
}
}
public NormalAtkBase()
{
m_weaponType = 0;
}
public void Reset()
{
m_step = -1;
}
public bool IsStepEnd()
{
return m_step >= m_totalStep - 1;
}
private void Awake()
{
m_transform = base.transform;
m_unit = GetComponent<EntityCha>();
}
public void LoadEffect(string swingName)
{
//m_efSwing1 = PrefabManager.Instance().Spawn("ef_swing");
//m_efSwing1.parent = m_transform;
//m_efSwingEx1 = PrefabManager.Instance().Spawn("ef_swing_ex1");
//m_efSwingEx1.parent = m_transform;
//m_efSwing2 = PrefabManager.Instance().Spawn("ef_swing1");
//m_efSwing2.parent = m_transform;
//m_efSwing2.localScale = new Vector3(1.3f, 1.7f, 1.7f);
//m_efThrust = PrefabManager.Instance().Spawn("ef_thrust");
//m_efThrust.parent = m_transform;
//m_efThrust.localPosition = new Vector3(0f, 0.05f, 0.08f);
//m_efThrust.localRotation = m_transform.rotation;
//m_efpunch = PrefabManager.Instance().Spawn("ef_punch");
//m_efPlash = PrefabManager.Instance().Spawn("ef_splash");
//m_efRotFog = PrefabManager.Instance().Spawn("ef_rotfog");
//for (int i = 0; i < 3; i++)
//{
// m_aryStepfog[i] = PrefabManager.Instance().Spawn("ef_stepfog", Vector3.one * 4f, base.transform.root.rotation);
// m_aryThrustfog[i] = PrefabManager.Instance().Spawn("ef_thrustfog", Vector3.one * 4f, Quaternion.identity);
// m_aryChongfog[i] = PrefabManager.Instance().Spawn("ef_stepfog_3", Vector3.one * 4f, base.transform.root.rotation);
//}
//Texture texture = Resources.Load("Png/Effect/" + swingName) as Texture;
//m_swingScript = m_efSwing1.GetComponent<Ef_swing1>();
//m_swingScript.m_attker = m_transform;
//m_swingScript.SetTexture(texture);
//m_swingScript2 = m_efSwing2.GetComponent<Ef_swing1>();
//m_swingScript2.m_attker = m_transform;
//m_swingScript2.SetTexture(texture);
//m_swingEx1Script = m_efSwingEx1.GetComponent<Ef_swing1>();
//m_swingEx1Script.m_attker = m_transform;
//m_thrustScript = m_efThrust.GetComponent<Ef_swing1>();
//m_thrustScript.m_attker = m_transform;
//m_splashScript = m_efPlash.GetComponent<Ef_splash>();
//m_splashScript.cha1 = m_transform;
//m_splashScript.m_attker = m_transform;
//m_punchScript = m_efpunch.GetComponent<Bullet_punch>();
//m_punchScript.m_attker = m_transform;
//m_rotfogScript = m_efRotFog.GetComponent<Ef_rotfog>();
}
public float DoAtk(EntityCha target)
{
float result = 0f;
if (target == null || m_unit == null)
{
return result;
}
m_target = target;
m_unit.SetAtkCollision(false);
Vector3 lhs = m_target.position - m_unit.position;
lhs.y = 0f;
lhs.Normalize();
float magnitude = lhs.magnitude;
Vector3 curDir = m_unit.forward;
if (curDir != Vector3.zero)
{
float num = Vector3.Dot(lhs, curDir);
if (magnitude > 0.2f)
{
if (num < 0.5f)
{
m_unit.SetAtkCollision(true);
m_unit.SetCurActionState(enStat.STAT_ACTION_MOVE);
return 0f;
}
}
else if (num < -0.2f)
{
m_unit.SetAtkCollision(true);
m_unit.SetCurActionState(enStat.STAT_ACTION_MOVE);
return 0f;
}
}
m_step = (m_step + 1) % m_totalStep;
int num2 = Random.Range(0, 4);
if (num2 < 2)
{
//HeroSounds.Instance.NormalAtkWhoopSound((EntityPlayer)m_unit, num2);
}
return UpdateStep(m_step);
}
protected virtual float UpdateStep(int nStep)
{
return 0f;
}
public virtual void CancelAtk()
{
m_unit.SetAtkCollision(true);
}
public void OnFog(int _kind)
{
switch (_kind)
{
case 3:
break;
case 0:
m_aryStepfog[m_curStepFogCount].gameObject.SetActive(true);
m_aryStepfog[m_curStepFogCount].position = m_transform.position;
m_aryStepfog[m_curStepFogCount].rotation = m_transform.rotation;
m_curStepFogCount = (m_curStepFogCount + 1) % 3;
break;
case 1:
m_aryThrustfog[m_curThrustFogCount].gameObject.SetActive(true);
m_aryThrustfog[m_curThrustFogCount].position = m_transform.position + m_transform.forward * 0.2f + Vector3.up * 0.15f;
m_aryThrustfog[m_curThrustFogCount].up = m_transform.forward;
m_aryThrustfog[m_curThrustFogCount].Rotate(m_transform.forward, Random.Range(0, 360));
m_curThrustFogCount = (m_curThrustFogCount + 1) % 3;
break;
case 2:
m_aryThrustfog[m_curThrustFogCount].gameObject.SetActive(true);
//m_aryThrustfog[m_curThrustFogCount].position = m_unit.m_bip01.position + m_unit.m_bip01.forward * 0.2f + Vector3.up * 0.15f;
//m_aryThrustfog[m_curThrustFogCount].up = m_unit.m_bip01.forward;
//m_aryThrustfog[m_curThrustFogCount].RotateAround(m_unit.m_bip01.forward, Random.Range(0, 360));
m_curThrustFogCount = (m_curThrustFogCount + 1) % 3;
break;
case 4:
m_aryChongfog[m_curStepFogCount].gameObject.SetActive(true);
m_aryChongfog[m_curStepFogCount].position = m_transform.position;
m_aryChongfog[m_curStepFogCount].rotation = m_transform.rotation;
m_curStepFogCount = (m_curStepFogCount + 1) % 3;
break;
}
}
}
}