private void SpawnPentagonMoveUpAndDown_Type_A(Transform spawnTr, Transform targetTr) { EnemyCore enemyCore = m_EnemyManager.SpawnEnemy(EnemyType.Pentagon, spawnTr.position, Quaternion.identity); Transform[] enemyFireTransforms = enemyCore.GetEnemyFireTransforms(); int bulletDamage = 10; float bulletSpeed = 60.0f; EntityBulletType EntityBulletType = EntityBulletType.SmallVulcan; enemyCore .SetInvincible(false) .SetPenetrable(false) .EventCore() .Sequence() .AppendActionMoveTo(targetTr.position, 20.0f) .Run(); enemyCore .EventCore() .Sequence() .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 60.0f, 5) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 60.0f, 5) .Wait(1.0f) .AppendAttackTornadoShot(enemyFireTransforms[0], bulletDamage, 50.0f, EntityBulletType, 25, 0.1f, true, AllyFlag.Enemy, Vector3.down, EventAttack.TornadoShot.Direction.ClockWise) .AppendAttackTornadoShot(enemyFireTransforms[0], bulletDamage, 50.0f, EntityBulletType, 25, 0.1f, true, AllyFlag.Enemy, Vector3.down, EventAttack.TornadoShot.Direction.CounterClockWise) .Loop(true) .Run(); }
private void SpawnPentagonMoveUpAndDown_Type_B(Transform spawnTr, Transform targetTr) { EnemyCore enemyCore = m_EnemyManager.SpawnEnemy(EnemyType.Pentagon, spawnTr.position, Quaternion.identity); Transform[] enemyFireTransforms = enemyCore.GetEnemyFireTransforms(); int bulletDamage = 10; float bulletSpeed = 50.0f; EntityBulletType EntityBulletType = EntityBulletType.SmallVulcan; enemyCore .SetInvincible(false) .SetPenetrable(false) .EventCore() .Sequence() .AppendActionMoveTo(targetTr.position, 20.0f) .Run(); enemyCore .EventCore() .Sequence() .Wait(0.5f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 0, 1) .Wait(0.5f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 0, 1) .Wait(0.5f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 0, 1) .Wait(1.0f) .Loop(true) .Run(); }
private void SpawnCircleStaying_Type_A(Transform spawnTr) { EnemyCore enemyCore = m_EnemyManager.SpawnEnemy(EnemyType.Circle, spawnTr.position, Quaternion.identity); Transform[] enemyFireTransforms = enemyCore.GetEnemyFireTransforms(); int bulletDamage = 10; float bulletSpeed = 30.0f; EntityBulletType EntityBulletType = EntityBulletType.MediumBean; enemyCore .EventCore() .Sequence() .AppendActionMoveBy(new Vector3(0, -20), 5.0f) .Wait(12.0f) .AppendActionMoveBy(new Vector3(0, 50), 12.5f) .Run(); enemyCore .EventCore() .Sequence() .AppendAttackTornadoShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 30, 0.1f, true, AllyFlag.Enemy, Vector3.down, EventAttack.TornadoShot.Direction.ClockWise) .Loop(true) .Run(); }
public void Init(GameEntity entity_sender, float speed, EntityBulletType bullet_type) { sender = entity_sender; movement_speed = speed; direction_norm = entity_sender.gameObject.transform.up.normalized; rotation_angle = entity_sender.gameObject.transform.eulerAngles.z; type = bullet_type; }
public GameObject SpawnBullet(EntityBulletType type, Vector3 position, Quaternion rotation, EntityCore core, float speed, int damage, Vector3 defaultDirection, AllyFlag allyFlag, bool selfControlled = false, Vector3 noramalizedDirection = default) { Rect bottomRectangle = new Rect(new Vector2(-15.0f, -15.0f), new Vector2(90.0f, 13.0f)); Rect topRectangle = new Rect(new Vector2(-15.0f, 102.0f), new Vector2(90.0f, 13.0f)); Rect leftRectangle = new Rect(new Vector2(-15.0f, -15.0f), new Vector2(13.0f, 130.0f)); Rect rightRectangle = new Rect(new Vector2(62.0f, -15.0f), new Vector2(13.0f, 130.0f)); if (bottomRectangle.Contains(position)) { return(null); } if (topRectangle.Contains(position)) { return(null); } if (leftRectangle.Contains(position)) { return(null); } if (rightRectangle.Contains(position)) { return(null); } GameObject bulletPrefab = GetEnemyBulletPrefabObject(type); if (bulletPrefab == null) { throw new Exception(type.ToString() + "의 불렛프리팹을 가져오는데 실패했습니다"); } GameObject gameObject = Instantiate(bulletPrefab, position, rotation); switch (allyFlag) { case AllyFlag.Player: gameObject.SetTagIncludeAllChildren("PlayerBullet"); break; case AllyFlag.Enemy: gameObject.SetTagIncludeAllChildren("EnemyBullet"); break; } EntityBulletInfo comp = gameObject.AddComponent <EntityBulletInfo>(); comp.SetSpeed(speed); comp.SetSelfControlled(selfControlled); comp.SetDamage(damage); comp.SetEntityCore(core); comp.SetDirection(noramalizedDirection); comp.SetDefaultDirection(defaultDirection); gameObject.GetComponent <EntityBulletMovementController>().SetEntityBulletInfo(comp); return(gameObject); }
/// <summary> /// 子弹是否是循环效果 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool IsLoopEffect(EntityBulletType t) { switch (t) { case EntityBulletType.LoopEffectLock: case EntityBulletType.LoopEffectLink: return(true); default: return(false); } }
/// <summary> /// 是否需要发射子弹 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool IsFireBullet(EntityBulletType t) { switch (t) { case EntityBulletType.Point: case EntityBulletType.Target: return(true); default: return(false); } }
public AttackAction(MonoBehaviour monoBehaviour, Transform fireTransform, Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag) { this.m_MonoBehaviour = monoBehaviour; this.m_Waitor = new EventWaitor(monoBehaviour); this.m_FireTransform = fireTransform; this.m_BulletManager = ManagerPool.GetInstance().GetManager <BulletManager>(); this.m_BulletDamage = bulletDamage; this.m_BulletSpeed = bulletSpeed; this.m_EntityBulletType = EntityBulletType; this.m_DefaultDirection = defaultDirection; this.m_AllyFlag = allyFlag; }
/// <summary> /// 是否是直接伤害型子弹 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool IsDirectDamage(EntityBulletType t) { switch (t) { case EntityBulletType.Direct: case EntityBulletType.Line: case EntityBulletType.LoopEffectLock: case EntityBulletType.UnLoopEffectLink: case EntityBulletType.LoopEffectLink: return(true); default: return(false); } }
/// <summary> /// 设置所有子弹效果的相关属性 /// </summary> /// <param name="t"></param> /// <param name="effectPoint">所有效果的发射点(挂载点)</param> /// <param name="effectIds">所有效果的ID</param> /// <param name="targetPosList">所有目标所在位置</param> private void InitBulletEffectAttribute(EntityBulletType t, List <Vector3> effectPoint, List <int> effectIds, List <Vector2> targetPosList) { switch (Entity.model.bulletType) { // 对准目标:设置位置、旋转 效果数量:等于挂载点数量 case EntityBulletType.LoopEffectLock: { Assert.Should(effectIds.Count == effectPoint.Count); // 对准目标则对准所有目标的重心点 var total_x = targetPosList.RubyInject(0.0f, (r, p) => p.x + r); var total_y = targetPosList.RubyInject(0.0f, (r, p) => p.y + r); var final_pos = new Vector2(total_x / targetPosList.Count, total_y / targetPosList.Count); // 所有效果都朝向重心点 for (int i = 0; i < effectPoint.Count; i++) { GameEffectManager.Instance.GetEffect(effectIds[i]).SetPositionAndRotation(effectPoint[i], final_pos); } } break; // 连接目标:设置位置、旋转、缩放 效果数量:等于挂载点数量 * 目标数量 case EntityBulletType.LoopEffectLink: case EntityBulletType.UnLoopEffectLink: { Assert.Should(effectIds.Count == effectPoint.Count * targetPosList.Count); var basedis = Attacker.model.range; Assert.Should(basedis > 0.0f, "invalid range ..."); // 挂载点和目标点分别连接 for (int i = 0; i < effectPoint.Count; i++) { for (int j = 0; j < targetPosList.Count; j++) { int effIdx = i * j; var attackPoint = effectPoint[i]; var diff = Vector2.Distance(new Vector2(attackPoint.x, attackPoint.z), targetPosList[j]); GameEffectManager.Instance.GetEffect(effectIds[effIdx]).SetPositionAndRotationAndScale(effectPoint[i], targetPosList[j], diff / basedis); } } } break; default: break; } }
public GameObject GetEnemyBulletPrefabObject(EntityBulletType type) { switch (type) { case EntityBulletType.SmallVulcan: return(SmallVulcan); case EntityBulletType.SmallBean: return(SmallBean); case EntityBulletType.MediumBean: return(MediumBean); case EntityBulletType.BigBean: return(BigBean); case EntityBulletType.MegaBean: return(MegaBean); } return(null); }
private void SpawnCircleUpLoopFollowing() { EnemyCore enemyCore = m_EnemyManager.SpawnEnemy(EnemyType.Circle, m_PathHolderList[0][0].position, Quaternion.identity); Transform[] enemyFireTransforms = enemyCore.GetEnemyFireTransforms(); EntityBulletType EntityBulletType = EntityBulletType.MediumBean; int bulletDamage = 10; float bulletSpeed = 50.0f; List <Vector3> vectorList = new List <Vector3>(); for (int i = 0; i < m_PathHolderList[0].Count; i++) { vectorList.Add(m_PathHolderList[0][i].position); } enemyCore .EventCore() .Sequence() .AppendActionMovePaths(vectorList.ToArray(), 15.0f) .Run(); enemyCore .EventCore() .Sequence() .Wait(1.5f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 0f, 1) .AppendAttackCornShot(enemyFireTransforms[2], bulletDamage, bulletSpeed, EntityBulletType, 0f, 1) .AppendAttackCornShot(enemyFireTransforms[3], bulletDamage, bulletSpeed, EntityBulletType, 0f, 1) .AppendAttackCornShot(enemyFireTransforms[4], bulletDamage, bulletSpeed, EntityBulletType, 0f, 1) .Wait(1.0f) .AppendAttackTornadoShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 10, 0.1f, true, AllyFlag.Enemy, Vector3.down, EventAttack.TornadoShot.Direction.ClockWise) .Loop(true) .Run(); }
public AttackAction SetGuidedShot(Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag, float shotInterval, int bulletCount, Func <GameObject> targetGetter) { m_AttackActionType = AttackActionType.TornadoShot; m_AttackAction = new GuidedShot(m_MonoBehaviour, m_FireTransform, defaultDirection, bulletDamage, bulletSpeed, EntityBulletType, allyFlag, bulletCount, shotInterval, targetGetter); return(m_AttackAction as GuidedShot); }
public AttackAction SetCornShot(Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag, float degree, int bulletCount) { m_AttackActionType = AttackActionType.TornadoShot; m_AttackAction = new CornShot(m_MonoBehaviour, m_FireTransform, defaultDirection, bulletDamage, bulletSpeed, EntityBulletType, allyFlag, degree, bulletCount); return(m_AttackAction as TornadoShot); }
public AttackAction SetTornadoShot(Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag, int bulletCount, float duration, bool followRatation = true, TornadoShot.Direction direction = TornadoShot.Direction.ClockWise) { m_AttackActionType = AttackActionType.TornadoShot; m_AttackAction = new TornadoShot(m_MonoBehaviour, m_FireTransform, defaultDirection, bulletDamage, bulletSpeed, allyFlag, EntityBulletType, bulletCount, duration, followRatation, direction); return(m_AttackAction as TornadoShot); }
public GuidedShot(MonoBehaviour monoBehaviour, Transform fireTransform, Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag, int bulletCount, float shotInterval, Func <GameObject> targetGetter) : base(monoBehaviour, fireTransform, defaultDirection, bulletDamage, bulletSpeed, EntityBulletType, allyFlag) { this.m_ShotInterval = shotInterval; this.m_BulletCount = bulletCount; this.m_TargetGetter = targetGetter; }
public CornShot(MonoBehaviour monoBehaviour, Transform fireTransform, Vector3 defaultDirection, int bulletDamage, float bulletSpeed, EntityBulletType EntityBulletType, AllyFlag allyFlag, float degree, int bulletCount) : base(monoBehaviour, fireTransform, defaultDirection, bulletDamage, bulletSpeed, EntityBulletType, allyFlag) { this.m_Degree = degree; this.m_BulletCount = bulletCount; }
private void SpawnBoss() { EnemyCore enemyCore = m_EnemyManager.SpawnEnemy(EnemyType.BossHexagon, new Vector3(30.0f, 107.5f, -5.0f), Quaternion.identity); Transform[] enemyFireTransforms = enemyCore.GetEnemyFireTransforms(); int bulletDamage = 10; float bulletSpeed = 50.0f; EntityBulletType EntityBulletType = EntityBulletType.BigBean; enemyCore .OnDestroyCallBack(() => RemoveTargetedEntity("BOSS")) .EventCore() .Spawn() .AppendActionMovePaths(new Vector3[] { new Vector3(30.0f, 80.0f, -5.0f), new Vector3(20.0f, 70.0f, -5.0f), new Vector3(40.0f, 65.0f, -5.0f), new Vector3(30.0f, 80.0f, -5.0f), }, 20.0f) .AppendCallBack(() => { enemyCore.EventCore() .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) // .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Wait(1.0f) .AppendAttackCornShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 360.0f, 10) .Run(); }) .Sequence() .Wait(20.0f) .AppendActionRotateBy(new Vector3(0, 0, 180.0f), 1.0f) .Spawn() .AppendAttackTornadoShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 20, 0.1f, false) .Sequence() .Wait(1.5f) .AppendAttackTornadoShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 20, 0.1f, false) .Spawn() .AppendAttackGuidedShot(enemyFireTransforms[0], bulletDamage, bulletSpeed, EntityBulletType, 30, 0.3f, () => m_PlayerManager.GetPlayer()) .AppendAttackGuidedShot(enemyFireTransforms[1], bulletDamage, bulletSpeed, EntityBulletType, 30, 0.3f, () => m_PlayerManager.GetPlayer()) .Sequence().Wait(9.0f) .Loop(true) .Run(); AddTargetedEntity("BOSS", enemyCore); }
/// <summary> /// 子弹是否是打直线型 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool IsLine(EntityBulletType t) { return(t == EntityBulletType.Line); }
/// <summary> /// 子弹是否是非循环效果(REMARK:注意 循环效果+非循环效果也不是全部子弹类型、还有发射型等) /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool IsUnLoopEffect(EntityBulletType t) { return(t == EntityBulletType.UnLoopEffectLink); }
public EntityEventAttackCore AppendAttackTornadoShot(Transform firetransform, int bulletDamage, float bulletSpeed, EntityBulletType type, int bulletCount, float duration, bool followRotation, AllyFlag allyFlag = AllyFlag.Enemy, Vector3?defaultDirection = null, EventAttack.TornadoShot.Direction direction = EventAttack.TornadoShot.Direction.ClockWise) { if (defaultDirection == null) { defaultDirection = Vector3.down; } EventAttack colortoAction = new EventAttack(m_IsSequence, m_MonoBehaviour, firetransform); colortoAction.SetTornadoShot(defaultDirection.Value, bulletDamage, bulletSpeed, type, allyFlag, bulletCount, duration, followRotation, direction); m_EventList.Enqueue(colortoAction); return(this); }
public EntityEventAttackCore AppendAttackCornShot(Transform firetransform, int bulletDamage, float bulletSpeed, EntityBulletType type, float degree, int bulletCount, AllyFlag allyFlag = AllyFlag.Enemy, Vector3?defaultDirection = null) { if (defaultDirection == null) { defaultDirection = Vector3.down; } EventAttack colortoAction = new EventAttack(m_IsSequence, m_MonoBehaviour, firetransform); colortoAction.SetCornShot(defaultDirection.Value, bulletDamage, bulletSpeed, type, allyFlag, degree, bulletCount); m_EventList.Enqueue(colortoAction); return(this); }
public EntityEventAttackCore AppendAttackGuidedShot(Transform firetransform, int bulletDamage, float bulletSpeed, EntityBulletType type, int bulletCount, float shotInterval, Func <GameObject> targetGetter, AllyFlag allyFlag = AllyFlag.Enemy, Vector3?defaultDirection = null) { if (defaultDirection == null) { defaultDirection = Vector3.down; } EventAttack colortoAction = new EventAttack(m_IsSequence, m_MonoBehaviour, firetransform); colortoAction.SetGuidedShot(defaultDirection.Value, bulletDamage, bulletSpeed, type, allyFlag, shotInterval, bulletCount, targetGetter); m_EventList.Enqueue(colortoAction); return(this); }
public void SetBullet(EntityBulletType type, float speed) { m_bulletType = type; m_bulletSpeed = speed; }
public void SetEntityBulletType(EntityBulletType EntityBulletType) => m_EntityBulletType = EntityBulletType;
private bool m_FollowRotation; //공격방향에따라 회전할지 public TornadoShot(MonoBehaviour monoBehaviour, Transform fireTransform, Vector3 defaultDirection, int bulletDamage, float bulletSpeed, AllyFlag allyFlag, EntityBulletType EntityBulletType, int bulletCount, float duration, bool followRotation, Direction direction = Direction.ClockWise) : base(monoBehaviour, fireTransform, defaultDirection, bulletDamage, bulletSpeed, EntityBulletType, allyFlag) { this.m_BulletCount = bulletCount; this.m_Duration = duration; this.m_Direction = direction; this.m_FollowRotation = followRotation; }
private void FireUltimate() { GameObject playerObject = m_PlayerManager.GetPlayer(); switch (m_PlayerGun.GetPlayerUltimateType()) { case PlayerUltimateType.Plane: { /* 울티메이트 플레인 공격지점 인덱스 위 -> 아래 그리고 왼쪽 -> 오른쪽 순으로 시작됨 * * '(0) * '(1) '(2) * '(3) '(4) * '(5) '(6) * */ GameObject ultimateObject = Instantiate(m_UltimatePlane, new Vector3(playerObject.transform.position.x, -10.0f, -5.0f), Quaternion.Euler(0.0f, 0.0f, 0.0f)); PlayerUltimateCore ultimateCore = ultimateObject.GetComponent <PlayerUltimateCore>().SetHp <PlayerUltimateCore>(1500); Transform[] fireTransforms = ultimateCore.GetUltimateFireTransforms(); int bulletDamage = 10; float bulletSpeed = 100.0f; Vector3 defaultDirection = Vector3.up; EntityBulletType bulletType = EntityBulletType.SmallBean; AllyFlag allyFlag = AllyFlag.Player; DOTween.Sequence() .AppendCallback(() => { m_PlayerManager.SetPlayerUltimateCount(m_PlayerManager.GetPlayerUltimateCount() - 1); m_PlayerManager.GetPlayerGun()?.SetUltimateEnabled(false); m_PlayerManager.SetIsInvincible(true); playerObject.transform.position = new Vector3( playerObject.transform.position.x, playerObject.transform.position.y, -6.0f ); }) .Append(playerObject.transform.DOScale(new Vector3(2.0f, 2.0f, 1.0f), 1.0f)) .Insert(0.0f, playerObject.transform.DOBlendableRotateBy(new Vector3(160.0f, 0.0f), 1.0f)) .Append(playerObject.transform.DOBlendableRotateBy(new Vector3(200.0f, 0.0f), 1.3f)) .Insert(1.0f, playerObject.transform.DOScale(new Vector3(1.0f, 1.0f, 1.0f), 1.0f)) .AppendInterval(0.6f) .AppendCallback(() => { m_PlayerManager.SetIsInvincible(false); playerObject.transform.position = new Vector3( playerObject.transform.position.x, playerObject.transform.position.y, -5.0f ); }) .Play(); EntityEventAttackCore eventCore = ultimateCore .OnDestroyCallBack(() => m_PlayerManager.GetPlayerGun()?.SetUltimateEnabled(true)) .EventCore() .AppendActionMoveTo(playerObject.transform.position, 2.0f) .Spawn() .AppendActionMoveBy(new Vector3(0.0f, 200.0f), 40.0f) .Sequence(); for (int i = 0; i < 40; i++) { eventCore .AppendAttackCornShot(fireTransforms[0], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[1], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[2], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[3], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[4], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[5], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .AppendAttackCornShot(fireTransforms[6], bulletDamage, bulletSpeed, bulletType, 0.0f, 1, allyFlag, defaultDirection) .Wait(0.5f); } eventCore.Run(); } break; default: break; } }