Quick Links: Download Gideros Studio | Gideros Documentation | Gideros community chat | DONATE
Is there a better way to do this? — Gideros Forum

Is there a better way to do this?

Tom2012Tom2012 Guru
edited November 2012 in General questions
I'm working on a game that uses tilemaps and scrolling.

The character starts at the very left side of the screen and runs right. When he reaches 220 pixels, the background scrolls.

Here's the code I've got that works - but good lord the code is loooong for such a simple thing. ;-)
function PlayerMovement:onEnterFrame()
 
self.heroX, self.heroY = self.scene.hero.body:getPosition();
 
self.distanceFromTilemapLeft = self.scene.hero:getX()-self.scene.tilemap:getX()
--self.distanceFromTilemapRight = self.scene.tilemap:getWidth() - self.distanceFromTilemapLeft
 
if(self.movingRight) then
 
	self.nextX = self.distanceFromTilemapLeft + self.speed
 
	print(self.nextX)
 
	-- Scoll and hero move
 
	if(self.nextX > 220) then
 
	self.heroMove = 220 - self.heroX;
	if(self.heroMove < 0) then
		self.heroMove = 0;
	end
 
	self.scrollMove = self.nextX - 220;
	if(self.scrollMove > self.speed) then
		self.scrollMove = self.speed;
	end
 
	else
 
	-- Just hero move
 
--print("hero move", self.heroMove)
	self.heroMove = self.speed
	self.scrollMove = 0;
 
	end
 
	-- make hero move
 
	self.scene.hero.body:setPosition(self.heroX+self.heroMove,self.heroY)
	self.scene.hero:setPosition(self.heroX+self.heroMove,self.heroY)
 
	-- make scroll move
 
	self.scene.tilemap:setX(self.scene.tilemap:getX()-self.scrollMove)
 
end
 
if(self.movingLeft) then
 
	self.nextX = self.distanceFromTilemapLeft - self.speed
 
		print(self.nextX)
 
	-- Scoll and hero move
 
	if(self.nextX < 220) then
 
	self.heroMove = 220 - self.nextX;
	if(self.heroMove > self.speed) then
		self.heroMove = self.speed;
	end
 
	self.scrollMove = self.heroX - 220;
	if(self.scrollMove < 0) then
		self.scrollMove = 0;
	end
 
	else
 
	-- Just scroll
 
	self.heroMove = 0
	self.scrollMove = self.speed;
 
	end
 
	-- make hero move
 
	self.scene.hero.body:setPosition(self.heroX-self.heroMove,self.heroY)
	self.scene.hero:setPosition(self.heroX-self.heroMove,self.heroY)
 
	-- make scroll move
 
	self.scene.tilemap:setX(self.scene.tilemap:getX()+self.scrollMove)
	--]]
end
 
self.scene.hero.body:setAngle(0)
 
end

Comments

Sign In or Register to comment.