I fixed it the issue where the sprite was flying off by using this code
instead:
layer.sprite.position = new.center
instead of layer.sprite.position = new.position;
But now, the sprite get's stuck whenever it hits the floor!
I attached the fixed source. What could possibly cause this?
--
You received this message because you are subscribed to the Google Groups
"cocos2d discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cocos-discuss.
For more options, visit https://groups.google.com/d/optout.
from cocos.particle_systems import *
from cocos.particle import Color
from cocos.text import Label
from cocos.tiles import load, RectMapLayer, RectMapCollider
from cocos.layer import Layer, ColorLayer, ScrollingManager, ScrollableLayer
from cocos.sprite import Sprite
from cocos.actions import *
from cocos.scene import Scene
from cocos.director import director
from pyglet.window import key
from pyglet.window.key import symbol_string, KeyStateHandler
from menu import GameMenu
director.init(width=1920, height=1080, autoscale = True, resizable = True)
Map = load("mapmaking.tmx")
scroller = ScrollingManager()
tilemap = Map['map0']
class Background(ColorLayer):
def __init__(self):
super(Background, self).__init__(65,120,255,255)
class Hud(Layer):
def __init__(self):
super(Hud, self).__init__()
self.label = Label("Score: ",
font_name = "Comic Sans",
font_size = 32,
anchor_x = "center",
anchor_y = "center")
self.label.position = 100, 60
self.add(self.label)
self.schedule(self.update)
def update(self, args):
self.label.element.text = "Score: " + str(layer.score)
class Game(ScrollableLayer):
is_event_handler = True
def __init__(self):
super(Game, self).__init__()
self.score = 0
# Handle keys
self.keys = KeyStateHandler()
director.window.push_handlers(self.keys)
# Add player
self.sprite = Sprite('magic.png')
self.sprite.position = 320, 240
self.sprite.direction = "right"
self.sprite.dx = 0
self.sprite.dy = 0
self.add(self.sprite, z=1)
# A list of balls
self.balls = set()
# Teleportation counter
self.teleportation = 0
self.add_particles()
self.sprite.jump = 0
def add_particles(self):
# Particle systems for level
self.particles1 = Galaxy()
self.particles1.size=10
self.particles1.end_color = Color(255,255,0,255)
self.particles1.size_var = 20
self.particles1.live_var = 0.5
self.particles1.pos_var[0] = tilemap.px_width
self.particles1.pos_var[1] = tilemap.px_height
self.particles1.total_particles = 50
self.particles1.auto_remove_on_finish = True
try:
self.particles1.add_particle()
except:
pass
self.particles2 = Fire()
self.particles2.size=20
self.particles2.start_color = Color(0,255,255,255)
self.particles2.size_var = 10
self.particles2.live_var = 0.5
self.particles2.pos_var[0] = tilemap.px_width
self.particles2.pos_var[1] = tilemap.px_height
self.particles2.total_particles = 50
self.particles2.auto_remove_on_finish = True
try:
self.particles2.add_particle()
except:
pass
self.add(self.particles1)
self.add(self.particles2)
def on_key_press(self, inp, modifers):
if symbol_string(inp) == "LEFT":
self.sprite.dx -= 3
if symbol_string(inp) == "RIGHT":
self.sprite.dx += 3
if symbol_string(inp) == "SPACE":
#Jump
if self.sprite.jump < 2:
self.sprite.jump += 1
self.sprite.dy += 10
if symbol_string(inp) == "LSHIFT":
if self.teleportation < 2:
self.teleportation += 1
if symbol_string(inp) == "LCTRL":
pass
def on_key_release(self, inp, modifers):
if symbol_string(inp) == "LEFT":
self.sprite.dx = 0
if symbol_string(inp) == "RIGHT":
self.sprite.dx = 0
layer = Game()
collider = RectMapCollider()
def update(args):
""" Update game"""
layer.sprite.dy -= 0.1
last = layer.sprite.get_rect()
new = last.copy()
new.x += layer.sprite.dx
new.y += layer.sprite.dy
collider.collide_map(tilemap, last, new, layer.sprite.dy, layer.sprite.dx)
layer.sprite.position = new.center
scroller.set_focus(*new.center)
# Schedule Updates
layer.schedule(update)
# Create the HUD
hud = Hud()
# Add map to scroller
scroller.add(tilemap)
#Create Scene
scene = Scene()
# Create and add background
background = Background()
scene.add(background)
#Add main layer to scroller
scroller.add(layer)
# Add scroller to scene
scene.add(scroller)
scene.add(hud)
# Game menu configuration
menu = GameMenu(scene)
menuScene = Scene()
menuScene.add(menu)
director.run(menuScene)