日志2025.2.11
日志2025.2.11
1.增加了敌人滚动这个特殊技能
//具有翻滚技能的敌人实现翻滚
public void ActivateDodgeRoll()
{
if(meleeType != EnemyType_Melee.Dodge)
{
return;
}
if(stateMachine.currentState != chaseState)
{
return;
}
animator.SetTrigger("DodgeRoll");
}
2.增加了敌人丢斧头这个特殊技能
public class AbilityState_Melee : EnemyState
{
private Enemy_Melee enemy;
public AbilityState_Melee(Enemy enemyBase, EnemyStateMachine stateMachine, string animBoolName) : base(enemyBase, stateMachine, animBoolName)
{
enemy = (Enemy_Melee)enemyBase;
}
public override void Enter()
{
base.Enter();
enemy.PullWeapon();
enemy.SetMoveDestination(2f);
}
public override void Exit()
{
base.Exit();
}
public override void Update()
{
base.Update();
if (moveTrigger)
{
enemy.InAnimationMove(0.8f);
}
if (triggerCalled)
{
stateMachine.ChangeState(enemy.recoveryState);
}
}
public override void AbilityTrigger()
{
base.AbilityTrigger();
GameObject newAxe = ObjectPool.instance.GetObject(enemy.axePrefab);
newAxe.transform.position = enemy.holdWeapon.transform.position;
//设置斧头发射方向
Vector3 dir = enemy.playerTransform.position - enemy.transform.position;
dir.Normalize();
newAxe.GetComponent<EnemyAxe>().SetUpAxe(dir);
}
}
public class EnemyAxe : MonoBehaviour
{
private Rigidbody rb;
[SerializeField] private GameObject impactFxPrefab;
public float flySpeed;
public float rotateSpeed;
private void Awake()
{
rb = GetComponent<Rigidbody>();
}
public void SetUpAxe(Vector3 dir)
{
rb.linearVelocity = dir * flySpeed;
transform.forward = dir;
}
private void Update()
{
transform.Rotate(Vector3.right * rotateSpeed);
}
private void OnTriggerEnter(Collider other)
{
GameObject newFx = ObjectPool.instance.GetObject(impactFxPrefab);
newFx.transform.position = transform.position;
ObjectPool.instance.ReturnObject(gameObject);
ObjectPool.instance.ReturnObject(newFx, 0.98f);
}
}
3.整理了近战敌人代码