simpleAttackRange method
void
simpleAttackRange({
- required Future<
SpriteAnimation> animation, - required Future<
SpriteAnimation> animationDestroy, - required Vector2 size,
- Vector2? destroySize,
- int? id,
- double speed = 150,
- double damage = 1,
- int interval = 1000,
- bool withCollision = true,
- bool useAngle = false,
- ShapeHitbox? collision,
- VoidCallback? onDestroy,
- VoidCallback? execute,
- LightingConfig? lightingConfig,
Execute the ranged attack using a component with animation
Implementation
void simpleAttackRange({
required Future<SpriteAnimation> animation,
required Future<SpriteAnimation> animationDestroy,
required Vector2 size,
Vector2? destroySize,
int? id,
double speed = 150,
double damage = 1,
int interval = 1000,
bool withCollision = true,
bool useAngle = false,
ShapeHitbox? collision,
VoidCallback? onDestroy,
VoidCallback? execute,
LightingConfig? lightingConfig,
}) {
if (!checkInterval('attackRange', interval, dtUpdate) || isDead) {
return;
}
if (useAngle) {
simpleAttackRangeByAngle(
animation: animation,
animationDestroy: animationDestroy,
size: size,
angle: getAngleToPlayer(),
id: id,
speed: speed,
damage: damage,
withDecorationCollision: withCollision,
collision: collision,
onDestroy: onDestroy,
destroySize: destroySize,
lightingConfig: lightingConfig,
attackFrom: AttackOriginEnum.ENEMY,
);
} else {
final direct = gameRef.player != null
? getDirectionToTarget(gameRef.player!)
: lastDirection;
simpleAttackRangeByDirection(
animationRight: animation,
animationDestroy: animationDestroy,
size: size,
direction: direct,
id: id,
speed: speed,
damage: damage,
withCollision: withCollision,
collision: collision,
onDestroy: onDestroy,
destroySize: destroySize,
lightingConfig: lightingConfig,
attackFrom: AttackOriginEnum.ENEMY,
);
}
execute?.call();
}