cocoscreat组件左侧添加与又册添加的区别

cocoscreat组件左侧添加与又册添加的区别,第1张

CocosCreator组件的左侧添加与右侧添加的区别在于,左侧添加的组件只能在当前节点上使用,而右侧添加的组件可以在所有节点上使用。左侧添加的组件只能应用于当前节点,而右侧添加的组件可以应用于所有节点,甚至在不同节点上共享相同的组件。此外,右侧添加的组件可以在节点之间进行复制,而左侧添加的组件则不能。总之,左侧添加的组件只能用于当前节点,而右侧添加的组件可以用于多个节点,并且可以在节点之间进行复制。

帧动画,就是通过一系列定义动画表现的动画形式,首先我们需要动画运行所需的所有帧。

这些帧通常以一张大图的形式(如下)给出,并不附带任何位置信息。

所以我们首先要将处理成带位置信息的大图形式,以便能够被cocos creator所用。

其次要创建一个承载动画的节点,并绑定Animation组件。

编辑动画,包括运行速度,帧事件,运行模式(顺序、循环)。

预览。

动画资源就对应于之前animation组件的 ccAnimationClip 类型的属性。在资源管理器中新建Animation资源。定义好动画资源后,就可以直接把这个资源拖到对应的属性 Default clip 上去。(如上图)

在层级管理器中选中动画节点,在动画编辑器中就可以对动画进行编辑了。

在动画编辑器中点击 编辑 按钮。在下面的属性列表中新建动画需要改变的属性。因为我们是帧动画,所以自然要改变的就是 ccSpriteSpriteFrame 属性了。

选中动画所需的帧拖到该属性的右边去。点击播放按钮,即可看到动画效果。

可以在动画编辑器的右下角修改动画的采样率和速度,以改变动画的帧变化速度。

保存动画。

选中选中节点,Animation组件下的 Play on Load 属性,即可在浏览器或者模拟器中查看动画效果。

CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的补充和分析。

引擎同时只会运行一个场景,当切换新场景时,默认会将当前场景内所有节点和其他实例销毁。

假设从场景A切换到新场景B,中间会经历那些过程呢?

场景B预加载preloadScene -> 场景B的onLoad -> 场景B的onStart -> 跳转到场景B -> 场景A资源释放

场景A中引用的静态资源会被自动释放,但是动态加载的资源则需要开发者自己手动释放。

问题场景:

场景A在onLoad中动态加载了资源D,切到场景B中也动态加载了资源D,而根据引用计数的资源释放机制用法,在场景A中加载资源D时要addRef = 1,场景A销毁时要decRef = 0,资源D被释放了,但是这时候场景B中又动态加载了资源D要addRef + 1,就会出现场景B中资源D的isValid=false,导致资源无法显示了。而如果不decRef,场景B中的资源D会因为refCount不为0,而不会被释放。

结论:

从这个问题理解,引用计数的资源释放机制,应当是针对单个场景中多个组件引用相同资源D,才适合引用计数,在场景销毁时用来控制资源是否销毁的。

释放资源,要根据资源在各场景中的实际使用情形,结合release和引用计数来使用。

场景A跳转场景B时,如何传递参数数据给场景B使用呢?

“ccdirectorloadScene”方法没有携带参数启动场景的功能,CocosCreator是通过“常驻节点”进行场景资源管理和参数传递。“常驻节点”怎么理解呢?

当切换新场景时,默认会将当前场景内所有节点和其他实例销毁,而所谓“常驻节点”,是指在场景切换时不被自动销毁,常驻内存中的节点组件。 那这个常驻节点应当建在哪里呢?

首先CocosCreator是推荐使用Canvas节点作为渲染根节点的,并且微信小游戏强制要求渲染根节点必须是Canvas。常驻节点创建的位置是和Canvas节点平级,即不能作为Canvas节点的子节点,而是应当在场景的根节点下,如下图所示。分析原因可能有两种:

将StartData节点设置成常驻节点:

在新场景中获取传递的数据:

注意: ccgameremovePersistRootNode 并不会立即销毁指定节点,只是将节点还原为可在场景切换时销毁的节点。

定义全局变量 windowGlobal:

由于所有脚本都强制声明为 "use strict",因此定义全局变量时的 window 不可省略。

接着在需要使用的地方可直接初始化 Global 并访问它:

注意:

全局背景音乐的播放,看完上面的内容应当知道怎么实现了吧,如果还不知道做的,你可以再仔细往上看一看。

如果在属性面板没有设置bgMusic播放的音频资源,则动态播放默认音频资源。

既然您看到这了,说明文章对你还有用,帮忙点个赞再走吧,谢谢!

自己动手写,分解项目中的各个模块需求,通过查文档和搜索Cocos社区,解决碰到的问题,最终在微信上线了下面这款微信小游戏《成语锦衣卫》,欢迎大家扫码体验,并作为参考项目模版,开发出属于自己的小游戏

下一节和朋友们说一说:微信登录功能的实现,CocosCreator第三方服务腾讯TCB云开发踩坑和微信云开发

在cocoscreator中,想要让输入框横屏,需要在场景的Canvas节点上设置Fit Height或Fit Width,根据游戏设计选择一个适合的设置。然后,在输入框节点上设置AnchorX为05,AnchorY为1,Position为(0, 0)。这样就可以让输入框横屏显示。

当需要在立起手机时d出输入键盘时,需要在输入框组件中设置KeyboardReturnType为Done或Search,这样在输入完成后点击“完成”或“搜索”按钮时,输入框会自动关闭。同时,在场景中需要监听键盘的d出与隐藏事件,来调整输入框的位置和大小。可以使用ccviewsetResizeCallback来监听窗口大小改变事件,使用ccviewisOrientationLandscape()来判断当前是否横屏。在窗口大小改变时,可以根据当前屏幕宽高比和设计分辨率比例来动态调整输入框的位置和大小,以保证输入框在不同分辨率下都能正确显示。

有的时候,我们需要在游戏里面实现大量的特效,比如一些爆炸效果,子d射击,以及天气效果,这个时候就可以用到粒子系统。粒子系统是模拟自然界的而一些粒子的物理运动效果,单个粒子是无法体现粒子 的效果的,需要大量的粒子配合,粒子不断的消失,不断的生成,就会出现相应的效果。

粒子系统可通过 Particle Designer 软件进行制作,也可以通过网页在线制作工具制作。

将制作好的plist文件导入到Cocos中,将其拖拽到场景中

在属性检查器中可勾选Custom,对粒子的属性进行更改

直接将type定义为粒子系统

将粒子资源拖拽到particle接口中

particle的type为ccParticleSystem,所以可以直接对其进行 *** 作,方法如下

更多的方法请参考CocosCreator API文档。

将particle定义为节点

此处particle定义的type为ccNode,则需要获取particle上的ccParticleSystem组件。

之后就可以对CustomParticle进行 *** 作了

Particle Designer: >

引言

在Cocos Creator游戏开发的过程中,经常需要做物体的碰撞、反d等物理判断和检测处理。

一、开启物理引擎

1: 编写脚本来开启物理引擎;

2: 将这个脚本挂载到场景的根节点;

3: 编写调试接口决定是否打开物理引擎调试;

4: ccdirectorgetPhysicsManager()enabled = true; // 打开物理引擎

1  `ccdirectorgetPhysicsManager()debugDrawFlags 调试标志;`

2  `varBits= ccPhysicsManagerDrawBits;`

3  `ccdirectorgetPhysicsManager()debugDrawFlags = Bitse_jointBit | Bitse_shapeBit;`

5: ccPhysicsManager:

1  `enable: 开启  debugDrawFlags: 调试标志,  gravity: 重力加速度,二维向量`

1书写组件类

1  `const {ccclass, property} = cc_decorator;`

2  `@ccclass`

3  `export default class EnablePhy extends ccComponent {`

4  `    @property({tooltip:"是否开启物理引擎"})`

5  `    enablePhy : boolean = false;`

6  `    @property({tooltip:"是否调试模式"})`

7  `    isDebug : boolean = false;`

8  `    @property({tooltip:"重力加速度"})`

9  `gravity : ccVec2 = ccv2(0, -320);`

11  `private phyManager : ccPhysicsManager;`

12  `    onLoad () {`

13  `        if(thisenablePhy){`

14  `            thisphyManager = ccdirectorgetPhysicsManager();`

15  `            thisphyManagerenabled = thisenablePhy;`

16  `            if(thisisDebug){`

17  `                thisphyManagerdebugDrawFlags = ccPhysicsManagerDrawBitse_shapeBit || ccPhysicsManagerDrawBitse_jointBit;`

18  `            }else{`

19  `                thisphyManagerdebugDrawFlags = 0;`

20  `            }`

21  `            //consolelog("系统默认重力加速度:",thisphyManagergravity);`

22  `            thisphyManagergravity = thisgravity;`

23  `        }else{`

24  `            thisphyManagerenabled = false;`

25  `        }`

26  `    }`

27  `}`

2将组件类挂载到根节点上

二、重力加速度

1: 物理引擎会有一个重力加速度,来模拟物理环境,你可以可以把重力加速度改成0,不受重力影响;

2: 修改重力加速度:

1  `ccdirectorgetPhysicsManager()gravity = ccv2(0, -320);`

三、物理刚体ccRigidBody

1: 刚体:形状不会改变

2: 刚体分为静态,动态刚体, 不受力的刚体(Kinematic,不受作用力的影响);

3: 刚体是受到物理作用的物体,由刚体带着节点移动;

4: 刚体组件ccRigidBoy:

1  `enabledContactListener: 是否开启碰撞事件的监听;`

2  `bullet: 是否为子d属性,防止高速穿越;`

3  `allowSleep: 是否允许进入休眠状态,一段时间后如果物体没有任何状态改变会进入休眠状态;`

4  `gravityScale: 该物体收重力的缩放;`

5  `linearDamping: 线性阻尼,衰减线性速度;`

6  `angularDamping: 角速度阻尼,衰减角速度;`

7  `linearVelocity: 刚体的线性速度;`

8  `angularVelocity: 刚体的角速度;`

9  `fixedRotation: 是否固定不旋转;`

10  `awake: 是否立刻唤醒此刚体;`

11  `active: 是否激活这个刚体,如果不激活,那么刚体不会参与碰撞;`

四、刚体碰撞器ccCollider

1: 光有刚体还不够,还要为每个刚体添加一个物理性状;

2: 物理形状的类型:

1  `矩形物理碰撞器;`

2  `圆形物理碰撞器;`

3  `多边形物理碰撞器;`

4  `链条碰撞器: PhysicsChainCollider;`

3: 碰撞器的物理参数:

1  `Tag: 碰撞器的标记,区别一个节点上多个不同的碰撞器;`

2  `Density: 形状的密度;`

3  `Sensor: 是否为一个碰撞感应器;`

4  `Friction: 摩擦系数;`

5  `Restitution: d性系数[0, 1], 0没有d性, 1完全d性碰撞;`

6  `Editing: 可以编辑碰撞器的形状;`

4: 一定要加物理碰撞器,而不是碰撞系统的碰撞器,非常容易出错误

更多cocos教学视频:

Cocos>

因为引擎对tiledmap支持的非常差劲,所以能不用tiledmap就不要用了

我使用的是245-246版本的CCC 在此版本下手动更改tsx文件里的路径会让引擎报gid的错误

所以最好在编辑地图的时候,就把和地图的相对路径给配置好,这样导入到CCC里后不会出现找不到

tiledmap在CCC中为ccTiledMap组件

加载的资源格式为ccTiledMapAsset

在tiledmap里已经配置好了层级,简单拿board举例

在tiledmap的图集资源中,每个对应着一个编号,但是注意,在用gid找寻资源时,记住gid要减去1

在tmx文件中,gid为0时,表示该网格内无,但是在图集中,的编号是以0开始

在ccTiledLayer组件中,提供了addUserNode这个api

在246版本上,每创建一个网格大小的节点,挂载上刚体后,使用adduserNode都会额外增加drawCall 1点

创建100个节点就增加100, 所以使用nodeparent = triLayernode

(如果是创建的碰撞体,请先设置好position,再将节点添加到父节点下)

使用setTiledGIDAt api,将gid设置成0即可

以上就是关于cocoscreat组件左侧添加与又册添加的区别全部的内容,包括:cocoscreat组件左侧添加与又册添加的区别、cocos creator (1) ——帧动画、微信小游戏开发之场景切换和常驻节点传递数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9290579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存