I'm trying out shinycocos and in order to do so I'm trying to build a space invaders-type game.
Things work well if the player spaceship is the only object in the space. I can see the player on the screen, and it responds to apply_impulse calls.
def initialize
@space = Space.new
@player_sprite = Sprite.new("player.png")
@player_sprite.position = [160, 10]
add_child @player_sprite
@player_body = Body.new(100.0, Float::INFINITY)
@player_body.pos = Vec2.new(@player_sprite.position[0], @player_sprite.position[1])
@player_body.vel = Vec2.new(0, 0)
@space.add_body(@player_body)
vertices = [
Vec2.new(@player_sprite.position[0]-23, @player_sprite.position[1]+21),
Vec2.new(@player_sprite.position[0]+23, @player_sprite.position[1]+21),
Vec2.new(@player_sprite.position[0]+23, @player_sprite.position[1]-21),
Vec2.new(@player_sprite.position[0]-23, @player_sprite.position[1]-21)
]
@player_shape = Poly.new(@player_body, vertices, Vec2.new(0,0))
@player_shape.e = 1.0
@player_shape.u = 1.0
@player_shape.collision_type = 1
@space.add_shape(@player_shape)
attach_chipmunk_shape(@player_shape)
end
However, once I add other objects, things get weird. It seems that somehow the position of the @player object is being affected by the mere addition of other objects in the space. This happens even if the two objects are far away from each other.
def initialize
@space = Space.new
@player_sprite = Sprite.new("player.png")
@player_sprite.position = [160, 10]
add_child @player_sprite
@player_body = Body.new(100.0, Float::INFINITY)
@player_body.pos = Vec2.new(@player_sprite.position[0], @player_sprite.position[1])
@player_body.vel = Vec2.new(0, 0)
@space.add_body(@player_body)
vertices = [
Vec2.new(@player_sprite.position[0]-23, @player_sprite.position[1]+21),
Vec2.new(@player_sprite.position[0]+23, @player_sprite.position[1]+21),
Vec2.new(@player_sprite.position[0]+23, @player_sprite.position[1]-21),
Vec2.new(@player_sprite.position[0]-23, @player_sprite.position[1]-21)
]
@player_shape = Poly.new(@player_body, vertices, Vec2.new(0,0))
@player_shape.e = 1.0
@player_shape.u = 1.0
@player_shape.collision_type = 1
@space.add_shape(@player_shape)
attach_chipmunk_shape(@player_shape)
@alien_sprite = Sprite.new("alien.png")
@alien_sprite.position = [160, 110]
add_child @alien_sprite
@alien_body = Body.new(100.0, Float::INFINITY)
@alien_body.pos = Vec2.new(@alien_sprite.position[0], @alien_sprite.position[1])
@alien_body.vel = Vec2.new(0, 0)
@space.add_body(@alien_body)
vertices = [
Vec2.new(@alien_sprite.position[0]-23, @alien_sprite.position[1]+21),
Vec2.new(@alien_sprite.position[0]+23, @alien_sprite.position[1]+21),
Vec2.new(@alien_sprite.position[0]+23, @alien_sprite.position[1]-21),
Vec2.new(@alien_sprite.position[0]-23, @alien_sprite.position[1]-21)
]
@alien_shape = Poly.new(@alien_body, vertices, Vec2.new(0,0))
@alien_shape.e = 1.0
@alien_shape.u = 1.0
@alien_shape.collision_type = 1
@space.add_shape(@alien_shape)
attach_chipmunk_shape(@alien_shape)
become_chipmunk_stepper
Director.add_touch_handler(self)
end
Any clues as to what I'm doing wrong?
Thanks!