cocosCreator-开发记录

1、默认例子中的text定义为hello(与helloworld.fire文件中一致),修改之后没有更新,变量改名之后正常更新,暂不清楚原因

@property
text: string = 'hello';

 2、如何创建一个粒子动效

 ① 使用particle2dx创建一个效果并导出.plist文件

 ② 编辑器=>层级管理器中创建渲染节点=>粒子,particleSystem的file选项选择我们自己创建好的效果(拖过去就行)

 ③ 将上一步创建好的编辑器=>层级管理器的渲染节点拖动到资源文件夹中(resources/xxx)生成prefab预制资源

 ④ 在代码中引用prefab资源创建节点

// resUrl的路径是相对于resources的,例如assets/resources/prefab/xxx.prefab,则resUrl = 'prefab/xxx',不需要带后缀
cc.loader.loadRes(resUrl, cc.Prefab, (err: Error, prefab: cc.Prefab) => {
        if (err) {
          return;
        }
        newNode = cc.instantiate(prefab);
        this.setClickNode(newNode, tag, position);
      });

参考:如何动态创建粒子效果

3、关于对象池:

重复利用缓存对象时,回收时需要将一些component中状态清空,避免再次使用时延续了上一次的状态,比如tween动画、碰撞检测框等

// 停止所有动作,否则再次从对象池中取出会继续未完成动作
node.stopAllActions()
// 碰撞组件需要移除,避免一次碰撞触发了多次(只在新建节点时创建一次不生效))
node.removeComponent(cc.BoxCollider)

4、关于碰撞检测:

① 先开启碰撞检测开关(全局的) 

// // 开启碰撞检测
const manager = cc.director.getCollisionManager()
manager.enabled = true;
manager.enabledDebugDraw = true;

② 两个需要碰撞的节点添加对应的collider组件,并在主动碰撞方添加回调函数

// 被碰撞方
const collider = finishLine.addComponent(cc.BoxCollider)
collider.name = "finishLineCollider"
collider.size = cc.size(finishLine.width, 2)

// 主动碰撞方
const collider = node.addComponent(cc.BoxCollider)
    collider.name = `dropItemCollider`
    collider.size = cc.size(node.width, node.height)
    // 这里可能提示collider没有onCollisionEnter的方法,添加到类型定义或者node预先定义的类型为null而不是cc.Node(避免被ts检查器类型追踪)
    collider.onCollisionEnter = (...args) => {
      console.log('peng', args)
      // xxx
}

 5、发布到微信小游戏

①:cocos编辑器内项目=>构建,需要设置输出目录(默认build)、微信开发工具路径等信息

②:build目录的代码可以直接放在微信工具里运行,目录结构如下

开黑吗我亚索贼6
原文地址:https://www.cnblogs.com/insight0912/p/11635752.html