Cocos creator避坑指南(一些比较容易错的地方)

持续更新中...

代码方面

1.存一个节点的值时,一定要存.clone值,不要直接存,否则存的只是引用,完全没用。

举个例子this.targetNode.worldPosition.clone();不管是位置信息还是颜色信息等等,都要存.clone()的值,这是js的特点,C#并不会这样

2.用碰撞事件和触发器事件多一步操作,看我另一个帖子。

3.有的时候AI给不出正确的代码,学会在浏览器里调试。console.log(object.keys(xxx));可以看到这个东西下面的属性,同时学会断点调试(和控制台配合)。还有windows"xxxx"=xxx;这种设置全局函数方便调试

4.打印不要用log();要用console.log();因为前者没法定位打印的位置,在浏览器控制台里就会发现前者是debug.ts打印的,后者打印是会显示你代码相应的位置

5.Cocos的默认坐标不是世界坐标,而是局部坐标。

编辑器方面

1.如果一个物体的代码里有缩放相关的代码,那么动画文件就不要涉及到缩放,否则即便动画文件里会导致这个物体来回放大缩小

2.和unity有所不同的是,coocs每创建一个2D的东西就会多创建一个相机,所以如果你是一个3D项目,本身3D的物体就需要一个相机,2D的UI就需要另一个相机。

3.和unity的碰撞有点不一样的是,Cocos想让两个物体碰撞,哪怕有一个是静止的,两个物体都要装刚体和碰撞体。静的物体的刚体就选static,动的物体如果既要被另一个物体的碰撞体挡住,也要受到碰撞事件的影响,那么就选动态的,然后刚体的线性因子就填1,0,1,角因子就填0,0,0

同时刚体质量为1,不受重力影响。如果动的物体用运动学,好像是会触发碰撞事件,但是不会被另一个物体的碰撞体挡住。

这里要注意:一定要在项目设置-物理,里面把碰撞矩阵该发生碰撞的层给勾上,这样才能发生碰撞/触发事件、才能被挡住等等。

4.玩家一般用人物控制器(character Controller)而不是用刚体+碰撞体,但是如果玩家要和其他东西发生碰撞事件,最好在玩家下面新建一个节点,节点上挂刚体+碰撞体,然后这个碰撞体最好和发生碰撞的物体的刚体选不同的group,否则很容易发生莫名其妙的错误。

其实强行用character contorller来发生普通碰撞事件也可以,看我另一个文章。但是好像发生不了触发器事件。

相关推荐
笑虾3 天前
Frida Hook Cocos2dx lua 3.15 的 lua 脚本
lua·cocos2d
玖玥拾4 天前
Cocos学习笔记:项目框架搭建与异步加载进度
游戏引擎·cocos2d
玖玥拾5 天前
Cocos学习笔记:序列化、配置文件与数据驱动
游戏引擎·cocos2d
流浪法师解剖鱼5 天前
CocosCreator制作推箱子游戏
python·cocos2d
玖玥拾6 天前
Cocos学习笔记:瓦片地图与坐标转换
游戏引擎·cocos2d
玖玥拾6 天前
Cocos学习笔记:粒子系统与对象层批量处理
游戏引擎·cocos2d
隔窗听雨眠6 天前
Unity与Simulink联合仿真:实现无人机目标追踪系统
unity·无人机·cocos2d·simulink
可别3906 天前
Cesium 实战功能指南:三维网格剖分 + 无人机飞行仿真(开源可落地)
开源·无人机·cocos2d
可别3907 天前
cesium实现网格化
游戏引擎·cocos2d
wgc2k8 天前
Oops Framework-5-GUI资源的图集打包方式
游戏·cocos2d