cocos3.x creator剪切、动画、物理引擎、碰撞检测等常见问题及解决办法

573次阅读
一条评论

ps:目前还没接触3d,所以以下均为2d的相关问题。

1、sprite设置九宫格后缩放时不生效

  1. 检查sprite的type是否为Sliced类型(原因》)
  2. 使用矩形变换工具修改contentSize,而不是缩放大小

2、使用Animation.play播放某个clip无效(动画没有切换/没有出现动画)

  1. 检查该clip是否挂载到了Animation的clips属性里
  2. 检查该clip是否有效
  3. 检查该clip使用的node的active属性是否为true(在creator里对应的是属性检查器里节点名称前面那个复选框是否勾选)

顺便提下:

通常,clip的创建步骤为:

资源管理器中右键->创建->Animation Clip->将clip挂载(拖拽)Animation组件; 做好的动画剪辑(Animation clip)可以挂载到任意节点的Animation组件上,但是动画剪辑用过的节点不可移动位置/修改节点名,否则会出现各种问题。

3、在动画编辑器里编辑clip时点击添加属性时没有sprite->spriteFrame选项

  1. 检查当前clip是否已经被挂载,即:将资源管理器里创建的clip拖拽到某个sprite的clips里。

4、改变Label组件string属性值后显示上不更新的问题

  1. 把使用find查找组件改为使用getComponent问题解决,原因不明|||(不会真的是bug吧?) 顺便说下cocos的组件获取: getChildByName只能获取直属子节点,并且获取到的是“节点”,需要获取组件还需getComponent

5、物理引擎

物理效果(如重力)不生效

  1. 检查是否给组件添加了刚体组件(RigidBody)

刚体被穿透

  1. 检查是否给碰撞双方的组件添加了碰撞体组件(BoxCollider、CircleCollider等)
  2. 检查物体的可见大小是否和碰撞体等大

通过instantiate动态创建的节点碰撞检测不生效

  1. 可以通过下面的代码开启碰撞体调试(将碰撞体和碰撞分组显示出来)检查创建的节点上是否有碰撞体;
  2. 检查创建的节点和碰撞体是否在同一个节点上:
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb |
        EPhysics2DDrawFlags.Pair |
        EPhysics2DDrawFlags.CenterOfMass |
        EPhysics2DDrawFlags.Joint |
        EPhysics2DDrawFlags.Shape;

关于碰撞检测和物理引擎的详细用法可以查看cocos官方的这个视频:

cocos Creator 3.x 做一款经典射击游戏 | 零基础入门 – 搜栈网 (seekstack.cn)

 

—最后更新于2022/9/24— 先记到这里,后面再补充。

1
facingscreen
版权声明:本站原创文章,由 facingscreen2021-12-21发表,共计1151字。
转载说明:本文为搜栈网原创文章,除特殊说明外皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
验证码
facingscreen 博主
2022-03-05 11:31:53 回复

nice

WindowsWindowsEdgeEdge98.0.1108.62