onCollision method

  1. @override
bool onCollision(
  1. GameComponent component,
  2. bool active
)
override

if return false so the object will not collide with anything or block the passage.

Implementation

@override
bool onCollision(GameComponent component, bool active) {
  if (enablePushable) {
    if (this is Movement) {
      if (!active && component is Movement) {
        if (!onPush(component)) {
          return super.onCollision(component, active);
        }
        Vector2 displacement = this.center - component.center;
        if (displacement.x.abs() > displacement.y.abs()) {
          if (displacement.x < 0) {
            (this as Movement).moveLeft((this as Movement).speed);
          } else {
            (this as Movement).moveRight((this as Movement).speed);
          }
        } else {
          if (displacement.y < 0) {
            (this as Movement).moveUp((this as Movement).speed);
          } else {
            (this as Movement).moveDown((this as Movement).speed);
          }
        }
      }
    } else {
      print(
          'The mixin Pushable not working in ($this) because this component don`t have the `Movement` mixin');
    }
  }
  return super.onCollision(component, active);
}