public override void OnAttach(ActorInstantiationDetails details) { base.OnAttach(details); LastHitDirection parentLastHitDir = (LastHitDirection)details.Params[0]; SetHealthByDifficulty(1); scoreValue = 100; RequestMetadata("Enemy/Sucker"); maxHealth = 4; SetAnimation(AnimState.Walk); if (parentLastHitDir != LastHitDirection.None) { IsFacingLeft = (parentLastHitDir == LastHitDirection.Left); health = 1; collisionFlags &= ~CollisionFlags.ApplyGravitation; SetTransition((AnimState)1073741824, false, delegate { speedX = 0; SetAnimation(AnimState.Walk); collisionFlags |= CollisionFlags.ApplyGravitation; }); if (parentLastHitDir == LastHitDirection.Left || parentLastHitDir == LastHitDirection.Right) { speedX = 3 * (parentLastHitDir == LastHitDirection.Left ? -1 : 1); } PlaySound("Deflate"); } else { health = 4; } }
public override void OnHandleCollision(ActorBase other) { base.OnHandleCollision(other); if (!isInvulnerable) { switch (other) { case AmmoBase collision: { Vector3 ammoSpeed = collision.Speed; if (MathF.Abs(ammoSpeed.X) > 0.2f) { lastHitDir = (ammoSpeed.X > 0 ? LastHitDirection.Right : LastHitDirection.Left); } else { lastHitDir = (ammoSpeed.Y > 0 ? LastHitDirection.Down : LastHitDirection.Up); } DecreaseHealth(collision.Strength, collision); break; } case AmmoTNT collision: { DecreaseHealth(5, collision); break; } } } }
protected override async Task OnActivatedAsync(ActorActivationDetails details) { LastHitDirection parentLastHitDir = (LastHitDirection)details.Params[0]; SetHealthByDifficulty(1); scoreValue = 100; await RequestMetadataAsync("Enemy/Sucker"); maxHealth = 4; SetAnimation(AnimState.Walk); if (parentLastHitDir != LastHitDirection.None) { IsFacingLeft = (parentLastHitDir == LastHitDirection.Left); health = 1; CollisionFlags &= ~CollisionFlags.ApplyGravitation; SetTransition((AnimState)1073741824, false, delegate { speedX = 0; SetAnimation(AnimState.Walk); CollisionFlags |= CollisionFlags.ApplyGravitation; }); if (parentLastHitDir == LastHitDirection.Left || parentLastHitDir == LastHitDirection.Right) { speedX = 3 * (parentLastHitDir == LastHitDirection.Left ? -1 : 1); } PlaySound("Deflate"); } else { health = 4; } }