2

I have three components, Ground, Block, and Player. I want player to stop falling when coming in contact with both Ground and Block entities. I have tried this.gravity("Ground, Block"); and this.gravity("Ground", "Block"); but the former disables gravity on both components and the latter enables gravity for the first argument.

Jordan Baron
  • 3,752
  • 4
  • 15
  • 26

1 Answers1

1

Use a single component that is added to any that need this functionality. So you could call this.gravity("Platform"), and then require it for any components that can be stood upon:

Crafty.c("Ground", {
   required: "Platform",
   init: function(){
     // etc   
   }, 
});

You don't even need to provide a specific definition for "Platform", since in this case it's just used as a marker component.

An advantage of this approach is that as we create new types of things the player can stand on, we don't have to extend a list in the player object -- we just add the "Platform" component to them as well.

starwed
  • 2,536
  • 2
  • 25
  • 39