cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 2 [ChooseRoleScene]
来源:互联网 发布:游戏人生软件下载 编辑:程序博客网 时间:2024/05/22 00:27
1. 触摸事件
初始化监听对象
local listenner = cc.EventListenerTouchOneByOne:create()
注册
eventDispatcher:addEventListenerWithSceneGraphPriority(listenner, self.layer)
设置处理函数函数
listenner:registerScriptHandler(function(touch, event)
//函数体
return true
end,cc.Handler.EVENT_TOUCH_BEGAN )
(1) EVENT_TOUCH_BEGAN
实现旋转 如果点击到了英雄区域if cc.rectContainsPoint(heroSize,touchbeginPt) then --rotate
isRotateavaliable = true
return true
end
记录一下点击位置 touchbeginPt
(2) 判断是否点击背包里的装备
因为self._weaponItem:getBoundingBox()获得的区域都是与背包的相对区域,所以鼠标点击位置首选转换到与背包的相对位置
touchbeginPt = self._bag:convertToNodeSpace(touchbeginPt)
如果点到装备了,放大和调透明度
self._weaponItem:setScale(1.7)
self._weaponItem:setOpacity(150)
(3)EVENT_TOUCH_MOVED 滑动角色
判断滑动位置是否超过50像素调用rotate3Heroes
通过3d坐标的移动来实现位置轮换,EaseCircleActionInOut增加了一些先慢后快的弹性效果
cc.EaseCircleActionInOut:create(cc.MoveTo:create(rotatetime,pos[3]))
(4)EVENT_TOUCH_ENDED
换装的实现在每个角色中实现了switchArmour switchWeapon switchHelmet
切换两套装备mesh的显示与隐藏。
不过这种实现方式的扩展性有待考量,难道说有n套装备,那么每个部位都需要 n个对应的mesh吗?
2. UI上的对象
(1) function ChooseRoleScene:addButton() “进入游戏”按钮
使用到了全局变量 ReSkin 来记录穿戴的装备id
在跳转BattleScene之前把相关的lua 对象清空了一下
package.loaded["BattleScene"]=nil
package.loaded["Manager"]=nil
package.loaded["Helper"]=nil
package.loaded["MessageDispatchCenter"]=nil
package.loaded["BattleFieldUI"]=nil
设置button位置
next_Button:setNormalizedPosition({x=0.34,y=0.13})
Node::setNormalizedPosition方法, Node的位置像素会根据它的父节点的尺寸大小计算,即按比例
(2). function ChooseRoleScene:addBag() 装备和属性
self:switchTextWhenRotate() 切换职业图标和设置属性值
其实装备的位置都是写死了的, 就没有什么参考的必要了
(3). function ChooseRoleScene:addHeros() 添加角色
旋转英雄:local function hero_rotate()
local rotation = self.layer:getChildByTag(sortorder[2]):getRotation3D()
self.layer:getChildByTag(sortorder[2]):setRotation3D({x=rotation.x,y=rotation.y+rotate,z=0})
end
sortorder[2] 存放的中间位置的英雄
setRotation3D({x=rotation.x,y=rotation.y+rotate,z=0}) 开启一个schedule每次旋转了0.5个弧度
0 1
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 2 [ChooseRoleScene]
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 3 [BattleScene]
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 1 [LoadingScene & MainMenuScene]
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 4 [BattlefieldUI & HPCounter]
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 5 [角色基类actor & AI实现]
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 6完结 [AttackManager&GameMaster]
- 关于《FantasyWarrior3D》开源项目编译问题的补充说明
- cocos2dx 3D 学习
- cocos2dx 特效 3D特效
- cocos2dx之3D相机
- android 平台下免费的 3D/2D 开源项目
- android 平台下免费的 3D/2D 开源项目
- Silverlight 3D开源项目
- Cocos2dx-新建项目 2
- cocos2dx之伪3D,2D平面图片按比例缩放实例
- cocos2dx 3.x 3d特效失败
- cocos2dx 3D游戏制作参考
- 【cocos2dx】简单增加3D精灵
- 矩阵连乘问题
- 开始写博客吧...把只是都留在OneNote和EverNote其实没什么意思...
- IOS开发---OC语言-⑦类方法
- Junit的简单使用
- C# CLS 所有基元类型
- cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 2 [ChooseRoleScene]
- Map键值排序
- T-CODE笔记
- 使用repo下载google 的android4.4 源码,和编译.运行
- 禁止其它用户本地登陆计算机
- C++标准库---map&multimap
- 哈希表中查找成功和不成功时的平均查找长度如何计算
- Hadoop计算中的Shuffle过程
- Struts和Spring所须包