| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using Sirenix.OdinInspector;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class ESpirits_Pinja : Enemy
- {
- [Space(30)]
- [Title("ESpirits_Pinja属性")]
- [LabelText("能否复活")] public bool canRevives;
- [ShowIf("canRevives")] [LabelText("复活次数")] public int totalRevivesNum;
- [ShowIf("canRevives")] public int revivesNum;
- [ShowIf("canRevives")] [LabelText("复活范围")] public Vector2 revivesPos;
- private PlayerController player;
- private BoomerangWeaponController boomerangWeaponController;
- public override void Init()
- {
- base.Init();
- if (canRevives)
- {
- if (revivesNum == 0)
- {
- revivesNum = totalRevivesNum;
- }
- mecanim.Skeleton.SetSkin((totalRevivesNum + 1 - revivesNum).ToString());
- mecanim.Skeleton.SetSlotsToSetupPose();
- }
- player = PlayersInput.instance[0];
- ChooseLockingTarget();
- boomerangWeaponController = attackController.attackMethod_march[0].skill as BoomerangWeaponController;
- }
- public override void OnState()
- {
- switch (state)
- {
- case CharacterState.Die:
- if (GameManager.instance.gameType == GameType.GameEnd)
- {
- revivesNum = totalRevivesNum;
- gameObject.SetActive(false);
- return;
- }
- revivesNum--;
- if (revivesNum < 0)
- {
- gameObject.SetActive(false);
- }
- else
- {
- Init();
- Vector3 revivesPos = transform.position;
- revivesPos.y = flyHeight;
- revivesPos += new Vector3(
- Random.Range(-revivesPos.x, revivesPos.x),
- Random.Range(-revivesPos.y, revivesPos.y),
- 0);
- if (revivesPos.y < 0) revivesPos.y = 0;
- transform.position = revivesPos;
- }
- return;
- case CharacterState.Attack:
- attackController.attackTime = 1;
- if (boomerangWeaponController.isReturning && boomerangWeaponController.isOut)
- {
- boomerangWeaponController.Init();
- if (GetAttack())
- {
- isConAttack = true;
- }
- ChangeState(CharacterState.Idle);
- return;
- }
- break;
- }
- base.OnState();
- }
- public override void ChangeState(CharacterState newState)
- {
- switch (state)
- {
- case CharacterState.Attack:
- ChooseLockingTarget();
- break;
- }
- switch (newState)
- {
- case CharacterState.Attack:
- ChooseLockingTarget();
- break;
- }
- base.ChangeState(newState);
- }
- public override bool SearchTarget()
- {
- targetCharacter = player;
- return true;
- }
- public void ChooseLockingTarget()
- {
- targetCharacter = player;
- }
- }
|