simpleAttackRangeByAngle method
void
simpleAttackRangeByAngle({
- required Future<
SpriteAnimation> animationUp, - required double width,
- required double height,
- required double radAngleDirection,
- Future<
SpriteAnimation> ? animationDestroy, - dynamic id,
- double speed = 150,
- double damage = 1,
- bool withCollision = true,
- VoidCallback? onDestroy,
- CollisionConfig? collision,
- LightingConfig? lightingConfig,
Execute the ranged attack using a component with animation
Implementation
void simpleAttackRangeByAngle({
required Future<SpriteAnimation> animationUp,
required double width,
required double height,
required double radAngleDirection,
Future<SpriteAnimation>? animationDestroy,
dynamic id,
double speed = 150,
double damage = 1,
bool withCollision = true,
VoidCallback? onDestroy,
CollisionConfig? collision,
LightingConfig? lightingConfig,
}) {
var initPosition = (isObjectCollision()
? (this as ObjectCollision).rectCollision
: this.position);
Vector2 startPosition = initPosition.center.toVector2();
double displacement = max(initPosition.width, initPosition.height) * 1.2;
double nextX = displacement * cos(radAngleDirection);
double nextY = displacement * sin(radAngleDirection);
Vector2 diffBase = Vector2(nextX, nextY);
startPosition.add(diffBase);
startPosition.add(Vector2(-width / 2, -height / 2));
gameRef.add(FlyingAttackAngleObject(
id: id,
position: startPosition,
radAngle: radAngleDirection,
width: width,
height: height,
damage: damage,
speed: speed,
attackFrom: this is Player ? AttackFromEnum.PLAYER : AttackFromEnum.ENEMY,
collision: collision,
withCollision: withCollision,
onDestroy: onDestroy,
flyAnimation: animationUp,
destroyAnimation: animationDestroy,
lightingConfig: lightingConfig,
));
}