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)

Reply via email to