Синтаксис: Lua
--задаєм масив точек відрізків нашого маршруту:
pike={
5,4,
107,56,
99,108,
42,123,
28,84,
45,38,
112,21,
165,41,
175,110,
141,182,
48,236,
30,232,
41,175,
105,156,
166,174,
184,215,
180,254,
148,293,
139,311,
pike={
5,4,
107,56,
99,108,
42,123,
28,84,
45,38,
112,21,
165,41,
175,110,
141,182,
48,236,
30,232,
41,175,
105,156,
166,174,
184,215,
180,254,
148,293,
139,311,
Синтаксис: Lua
--функція руху від точки до точки с заданною швидкістю
function speed_move2(sprite,x2,y2,speed)
x1, y1 = sprite:getPosition()
local d=math.sqrt(math.abs(x1-x2)^2+math.abs(y1-y2)^2) --довж гіпотенузи
speed=(d/speed)*1000
speed=speed/1000*60 --60fps
sprite.move = MovieClip.new{
{1, speed, sprite, {x = {x1, x2, "inBack"},y = {y1, y2, "inBack"}}} -- програти з 1 до 100кадру з рухом по осі Х від 0 до 200
}
sprite.move:gotoAndPlay(1)
sprite.move:addEventListener(Event.COMPLETE ,function()runpath(sprite) end )
function speed_move2(sprite,x2,y2,speed)
x1, y1 = sprite:getPosition()
local d=math.sqrt(math.abs(x1-x2)^2+math.abs(y1-y2)^2) --довж гіпотенузи
speed=(d/speed)*1000
speed=speed/1000*60 --60fps
sprite.move = MovieClip.new{
{1, speed, sprite, {x = {x1, x2, "inBack"},y = {y1, y2, "inBack"}}} -- програти з 1 до 100кадру з рухом по осі Х від 0 до 200
}
sprite.move:gotoAndPlay(1)
sprite.move:addEventListener(Event.COMPLETE ,function()runpath(sprite) end )
Клас спрайта який рухається по маршруту
Синтаксис: Lua
enemy1 = Core.class(Sprite)
function enemy1:init(x,y,path,speed)
self.frame={}
self.frame[1] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0001.png"))
self.frame[2] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0002.png"))
self.anim = MovieClip.new{
{1, 3, self.frame[1]},
{4, 7, self.frame[2]}
}
self.anim:setGotoAction(7, 1)
self.anim:gotoAndPlay(1)
----------------------------------------------------
self:setPosition(x,y)
self.x=x
self.y=y
self.path=path
self.speed=speed
self.step=3
self:addChild(self.anim)
stage:addChild(self)
runpath(self)
end
function runpath(self)
if self.step+1==#self.path then
self.step=3
self.x=self:getX()
self.y=self:getY()
else
self.step=self.step+2
end
self.x2=self.x+self.path[self.step]-self.path[1]
self.y2=self.y+self.path[self.step+1]-self.path[2]
speed_move2(self,self.x2,self.y2,self.speed)
end
function enemy1:init(x,y,path,speed)
self.frame={}
self.frame[1] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0001.png"))
self.frame[2] = Bitmap.new(Texture.new("controllers/enemy1/krovosisi0002.png"))
self.anim = MovieClip.new{
{1, 3, self.frame[1]},
{4, 7, self.frame[2]}
}
self.anim:setGotoAction(7, 1)
self.anim:gotoAndPlay(1)
----------------------------------------------------
self:setPosition(x,y)
self.x=x
self.y=y
self.path=path
self.speed=speed
self.step=3
self:addChild(self.anim)
stage:addChild(self)
runpath(self)
end
function runpath(self)
if self.step+1==#self.path then
self.step=3
self.x=self:getX()
self.y=self:getY()
else
self.step=self.step+2
end
self.x2=self.x+self.path[self.step]-self.path[1]
self.y2=self.y+self.path[self.step+1]-self.path[2]
speed_move2(self,self.x2,self.y2,self.speed)
end
Використання
Синтаксис: Lua
enemy1.new(100,100,pike,50)
Немає коментарів:
Дописати коментар