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来发生普通碰撞事件也可以,看我另一个文章。但是好像发生不了触发器事件。

相关推荐
weixin_409383123 天前
cocos shader闪光
游戏引擎·cocos2d
weixin_409383124 天前
cocos shader三角流光
游戏引擎·cocos2d
weixin_409383124 天前
cocos shader流光文字 不显示透明部分
游戏引擎·cocos2d
CodeCaptain11 天前
Cocos Creator 3.8.x 可对tiled 1.4.x进行的操作或分析有哪些
经验分享·游戏·typescript·cocos2d
CodeCaptain12 天前
CocosCreator3.8.x 解析Tiled1.4.x【瓦片图层、对象图层、图像图层、组图层】的核心原理
经验分享·游戏·typescript·cocos2d
wgc2k12 天前
从明码 CSV 到 AES 加密 TXT:Cocos3.8 游戏数据加密实践
cocos2d
CodeCaptain15 天前
Cocos Creator 3.8.0 官方文档明确支持 Tiled Editor v1.4 版本,也兼容 1.4.x 小版本(如1.4.3)
cocos2d
怣疯knight15 天前
cocos creator 的几个变量显示写法
cocos2d
CodeCaptain15 天前
Cocos Creator3.8.0 Tiled地图三合一完整脚本(加载+兼容性校验+坐标互转,一键可用,适配Tiled1.4.x)
游戏·cocos2d
CodeCaptain15 天前
一个快速校验地图资源是否符合兼容要求的小脚本(Cocos Creator3.8.0)
游戏·typescript·cocos2d