quick cocos2d-x 实现划线轨迹,精灵匀速跟随移动的效果

 1 local MainScene = class("MainScene", function()
 2     return display.newScene("MainScene")
 3 end)
 4 local CURRENT_MODULE_NAME = ...
 5 local Queue = import("./Queue", CURRENT_MODULE_NAME)
 6 function MainScene:ctor()
 7
 8     local draw_node = CCDrawNode:create()
 9     self:addChild(draw_node)
10
11     local sp = display.newSprite("res/res.png", 0, 0)
12     self:addChild(sp)
13     self.myQueue = Queue.new(100)
14
15     self.layer = display.newLayer()
16     self.layer:setTouchEnabled(true)
17     self.layer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)
18     self.layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function(event)
19         if event.name == "began" then
20             sp:setPosition(event.x,event.y)
21             return true
22         elseif event.name == "moved" then
23             draw_node:drawDot(ccp(event.x, event.y), 3, ccc4f(220, 10, 10, 222))
24             local point = ccp(event.x, event.y)
25
26             self.myQueue:enQueue(point)
27             print("ENQUEUE: "..point.x.." ,  "..point.y)
28         elseif event.name == "ended" then
29         end
30     end)
31     self:addChild(self.layer)
32
33     CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(function(dt)
34         if self.point == nil and self.myQueue:isEmpty() == false then
35             self.point = self.myQueue:deQueue()
36             print("DEQUEUE"..self.point.x.." ,  "..self.point.y)
37         end
38
39         if self.point ~= nil then
40             if math.floor(self.point.x) - math.floor(sp:getPositionX()) < 0 then
41                 self.x= -1
42             elseif math.floor(self.point.x) - math.floor(sp:getPositionX()) > 0  then
43                 self.x= 1
44             else
45                 self.x = 0
46             end
47
48             if math.floor(self.point.y) - math.floor(sp:getPositionY()) < 0 then
49                 self.y=-1
50             elseif math.floor(self.point.y) - math.floor(sp:getPositionY()) > 0  then
51                 self.y= 1
52             else
53                 self.y= 0
54             end
55
56             local spX = sp:getPositionX() + self.x
57             local spY = sp:getPositionY() + self.y
58
59             sp:setPosition(ccp(spX, spY))
60
61             if math.floor(spX) == math.floor(self.point.x) and math.floor(spY) == math.floor(self.point.y) then
62                 self.point = nil
63             end
64         end
65     end, 0.01, false)
66 end
67
68 function MainScene:onEnter()
69 end
70
71 function MainScene:onExit()
72 end
73
74 return MainScene

代码还有一个队列,直接拿我以前写的一个Queue。地址在:http://www.cnblogs.com/vokie/p/4110003.html

效果就是画出轨迹线路,精灵可以沿着轨迹线路匀速运动起来。代码基于quick 2.2.5

效果图片

时间: 2024-07-28 18:04:34

quick cocos2d-x 实现划线轨迹,精灵匀速跟随移动的效果的相关文章

quick cocos2d x 手机(Android端)启动过程学习

简要学习下quick cocos2d x 在安卓端启动的过程. 首先需要了解一点:quick cocos2d x是依托于Android的activity和GLSurfaceView(继承自SurfaceView)的环境来显示quick层的游戏界面. (1)首先quick类的android游戏从AndroidManifest.xml文件指定的activity(假设AC)启动. (2)AC继承父类的Cocos2dxActivity. (3)调用静态初始化块,加载cocos2dx的动态库.也就是一些C

quick cocos2dx 判断坐标是否在精灵内部

local pos = ccp(10, 10)local sprite=display.newSprite("02.png")    //创建一个精灵 sprite:setPosition(ccp(10,10))self:addChild(sprite) if sprite:getBoundingBox():containsPoint(pos) then print("在内部") end quick cocos2dx 判断坐标是否在精灵内部,布布扣,bubuko.c

quick cocos2d-x Xcode下省去clean,让修改的脚本生效

<quick cocos2d-x Xcode下省去clean,让修改的脚本生效> 项目  target     build phases    点击build phase的空白区域 选择Editor     Add Build Phase      Add Run Script Build Phase 编写脚本: 顺序调整:(第二顺位) 这样就可以避免每次修改了lua脚本,都要手动clean,然后再run,太费时间.. quick cocos2d-x Xcode下省去clean,让修改的脚本生

quick cocos2d x场景切换的生命周期函数调用学习

先上一个场景的基本模版: 1 local ModelScene = class("ModelScene", function() 2 return display.newScene("ModelScene") 3 end) 4 5 function ModelScene:ctor() 6 self.sceneName = "ModelScene" 7 -- 注册点击事件监听 8 self.layer = display.newLayer() 9

很久没写博客了!今天来写个八方向摇杆基于quick cocos2d

首先!马上毕业了最近在找工作,还算有点时间好久没写东西了就写点东西吧! 进入主题,首先先思考算法和逻辑.把圆分为八块,每块45度.正上,正下,正左,正右会被X和Y 平分.一边一半各是22.5度.(PS:开始想用 斜率的,但是发现斜率是tan的图像,也就是无限趋近最大值和最小值的不好做判断最后就用了cos也可用sin)思考计算的过程图如下: 准备工作完了就开始,首先控制的人物有八个状态分别是:上,下,左,右,左上,左下,右上,右下的动画.不同的状态对应着不同的动画,触控点和圆心点作比较来判断是哪个

SpriteBuilder实现2D精灵光影明暗反射效果(二)

使用SpriteBuilder新建一个项目,将默认MainScene.ccb中的内容统统删掉,此时场景应该是一片漆黑. 将官网中的2张图片以及我自己做的2张图片全部拖拽到其文件视图中去: 其中加_n后缀的图片表示原图的法线贴图. 将2张不带_n后缀的图片分别拖到黑黑的场景中去,调整到合适位置. 分别将2个精灵的Normal map设置为_n后缀的对应图片: 分别打开2个精灵的Lighting特效.这时已经可以看到光影效果,可惜这时SpriteBuilder给你的"假象",如果此时编译运

Cocos2D实现RPG队伍菜单随意调整角色顺序的效果

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 前一篇我们实现了队伍实现拖尾效果,可是在实际游戏中我们往往须要依据不同的角色能力,角色职业对角色队伍进行排序,并且希望排序后的效果能马上在游戏地图场景中反应出来,所以在本篇博文中我们就来看看怎样实现调整角色顺序并且马上在地图中显示的功能. 能够看到我们在将角色Panda从队列头部移至第3位后,地图上角色队列也马上发生了改变. 首先打开SpriteBuilder

Cocos2D实现RPG游戏人物地图行走的跟随效果

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在一些RPG游戏中,人物队列在地图中行走的时候有时需要实现一个跟随效果,比如大家都玩过的FC游戏<<吞食天地>>. 效果为当队列只有一个人时,Ta可以自由在地图中行走,当队列多于一人时,我们让其他角色跟随在游戏主角之后行走,达到一种"萌萌的"拖尾效果. 如上图,可以看到游戏队列中有4位角色,但我们设定只显示后2位,当然后面跟着

利用pixi.js制作精灵动画

CSS Sprites 技术对于广大的前端工程师来说应该是一点也不陌生.国内开发者昵称为CSS精灵,通过一定的技术手段,让精灵动起来,我称其为精灵动画,那么目前有哪些实现方式 呢?下面让我们详细的聊聊. 关于实现精灵动画的方式有很多种,我自己实践过的主要有三种: 1: 把动作分解成一系列连续的编号的图片,如img0.jpg,img1.jpg,img2.jpg...,然后利用setIntval等定时器不断的去更换图片地址. 2: 把动作按照一定的间距排列在一张图片上,利用css3的动画帧,做出动画