cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 2 [ChooseRoleScene]

1. 触摸事件

function ChooseRoleScene:initTouchDispatcher()

初始化监听对象

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个弧度

时间: 2024-10-19 21:57:58

cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 2 [ChooseRoleScene]的相关文章

cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 3 [BattleScene]

还是从构造函数看起 function BattleScene.create() 1. setCamera() (1) 创建相机 camera = cc.Camera:createPerspective(60.0, size.width/size.height, 10.0, 4000.0) cpp中的声明: /** * Creates a perspective camera. * * @param fieldOfView The field of view for the perspective

cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 6完结 [AttackManager&GameMaster]

[AttackCommand] 1. 声明基本的碰撞体,作为角色释放的攻击单位 BasicCollider = class("BasicCollider", function() local node = cc.Node:create() node:setCascadeColorEnabled(true) return node end) function BasicCollider:ctor() self.minRange = 0 --the min radius of the fa

cocos2dx 3d开源项目 fantasyWarrior3D 从零走起 5 [角色基类actor & AI实现]

1. 构造对象 从actor.lua中可以看到一些"面向对象"概念实现 (1) 基本属性的"继承" Knight = class("Knight", function() return require "Actor".create() end) Knight是在actor创建完成已经后才重新定义了构造函数ctor(),所以不会影响基类ctor()的调用 (2) 动作的"多态" Knight._action

官方demo fantasyWarrior3D 从零走起[LoadingScene & MainMenuScene]

[AppDelegate.cpp] 还是从applicationDidFinishLaunching()开始好了 发现这里多了一个对脚本进行加密的方法 (1) stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); (2)通过config.json配置来找到lua的入口main.lua并执行,再跳转到第一个界面Loa

C语言开源项目

值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd tinyhttpd是一个超轻量型Ht

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

Vue常用经典开源项目汇总参考-海量

Vue常用经典开源项目汇总参考-海量 Vue是什么? Vue.js(读音 /vju/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用. Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. 易用(已经会了HTML,CSS,J

GitHub 优秀的 Android 开源项目

转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包含ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其它如Dialog.Toast.EditText.TableView.Activity Animation等等. 一.ListView android-pulltorefresh 一个强大的拉动

[转]Android开源项目分类汇总

我喜欢收集源码,如今这个时代,我觉得我们要做的不是做前人做过的事,而是学习他们的经验然后在这基础上创新做出更伟大的事. 转自https://github.com/Trinea/android-open-project Android开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView