CocosCreator微信小游戏入门实战《小猫钓鱼》(五):碰撞系统

转载请保留原文链接:https://blog.csdn.net/zzx023/article/details/83064115

 

做游戏就和做导演一样,所以我们才有cc.director,哈哈。

通过前面几节,我们的游戏中已经拥有了鱼钩、鱼这两位主角,并且它们试镜成功(动作系统没问题),接下来得把最重要得对话剧本交给它们了,也就是我们游戏当中鱼钩与鱼之间的交互。

 

鱼与鱼钩交互过程中,最重要得一点就是碰撞,我们大部分得业务逻辑都是碰撞时进行的,感谢CocosCreator内置了一个简单好用碰撞检测系统,使得我们可以很方便的进行碰撞相关的开发。

 

来,我们现在就开始吧。

首先我们需要先建立好碰撞分组,可以参考官方文档:

http://docs.cocos.com/creator/manual/zh/physics/collision/collision-group.html

 

打开项目设置面板,我们添加两个新的分组:Fish(鱼),Hook(鱼钩),同时勾选允许Fish与Hook产生碰撞。

 

接下来,我们把鱼和鱼钩的Group属性都设置为对应的分组。

 

 

注意咱们的鱼时预制体,修改完后要记得保存。鱼钩是上一节我们编写的Controller节点。

 

做完这些以后鱼和鱼钩还不会在游戏中产生碰撞,因为我们还缺少一个重要的前提条件:碰撞组件。

关于碰撞组件,官方文档有详细说明:

http://docs.cocos.com/creator/manual/zh/physics/collision/edit-collider-component.html

 

我们先给Controller添加一个碰撞组件BoxCollider,勾选Editing以后,可以在编辑器中通过鼠标拖动编辑碰撞盒的大小。

 

 

鱼的也加上

 

接下来我们在场景脚本的Onload方法中添加以下代码:

    onLoad () {

        var manager = cc.director.getCollisionManager();//获取碰撞检测系统

        manager.enabled = true;//默认碰撞检测系统是禁用的,需要手动开启碰撞检测系统

        manager.enabledDebugDraw = true;//开启后可在debug中显示碰撞区域

    },

 

在Controller中实现碰撞回掉函数

    onCollisionEnter: function (other , self) {

        other.color = cc.Color.RED;

    }

碰撞到的鱼,我们让它变红。

 

运行一下,我们在debug下看到所有的碰撞区域,并且可以看到碰撞后的效果:变红

 

Nice,关键部分已经完成,剩下的就是业务逻辑以及一些细节完善的东西的。

最后我们把收杆的动作以及钓到鱼的表现加上就完整了。

 

为了表现效果,我们调整一下Controller和Fish的锚点。

并且修改以下代码:

 

Hook.js:

cc.Class({

    extends: cc.Component,



    properties: {

        RegainSpeed : 320,

        isRegaining : {

            default : false,

            visible : false

        }

    },



    // LIFE-CYCLE CALLBACKS:



    // onLoad () {},



    start () {

        this.StartLine();

    },



    StartLine () {

        this.node.stopAllActions();

        this.node.runAction(cc.repeatForever(cc.moveBy(4,cc.p(0,-100))));

        this.isRegaining = false;

    },



    RegainLine () {//收杆

        if (this.isRegaining)

            return;

        this.node.stopAllActions();//停止下沉动作

        var duration = Math.abs(this.node.y) / this.RegainSpeed;

        if (duration < 5) duration = 5;//收杆事件太快,不足5秒的,按5秒来运动

        this.node.runAction(cc.moveTo(duration, cc.v2(0,0)).easing(cc.easeSineIn()));//收杆动作,通过easing来优化效果

        this.isRegaining = true;

    }



    // update (dt) {},

});

 

 

Controller.js:

    onCollisionEnter: function (other , self) {

        other.node.color = cc.Color.RED;

        var pHook = this.mHook.getComponent(Hook);

        pHook.RegainLine();//鱼钩收杆



        other.node.stopAllActions();

        other.node.group = "default";//设置碰撞分组,没必要继续判断和鱼钩的碰撞了

        other.node.parent = this.node;//钓到的鱼挂在鱼钩上

        other.node.setPosition(cc.v2(0,0));

        other.node.runAction(cc.repeatForever(cc.sequence(

            cc.rotateTo(0.5 , -60 * other.node.scaleX),

            cc.rotateTo(0.5 , -30 * other.node.scaleX)

        )));//钓到的鱼挣扎动作

    }

 

 

最终效果如下:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Cocos Creator是一种基于JavaScript的游戏开发引擎,可用于开发简单的手机游戏应用程序,包括微信小游戏。目前,Cocos Creator平台上有120多套微信小游戏源代码可供游戏开发者使用,这些源代码包含了各种类型的游戏,如益智游戏、动作游戏、运动游戏、角色扮演游戏等等。这些源代码可大大加速游戏开发进程,并使游戏开发者能够专注于游戏的设计和创意。此外,通过Cocos Creator平台,游戏开发者可以使用丰富的可视化编辑工具和开发工具,轻松创建游戏精灵、动画和场景等元素,进而快速实现游戏的构建。总的来说,Cocos Creator平台上的120多套微信小游戏源代码为游戏开发者提供了可靠的资源和支持,使他们可以更快、更便捷地创建出高质量的微信小游戏,从而实现更大的商业成功。 ### 回答2: cocos creator是一款非常受欢迎的游戏开发引擎,其集成了丰富的功能和工具,可以很方便地构建2D和3D游戏。微信小游戏则是目前非常流行的一种轻量级移动游戏,因为与微信平台无缝集成,所以被越来越多的开发者采用。 在这样的背景下,120多套cocos creator微信小游戏源码的出现,可以让开发者更加便捷地开展游戏开发工作。这些源码涵盖了各种类型的游戏,如飞行射击、跑酷、休闲益智、卡牌战斗等等,开发者可以根据自己的需要选择适合自己的源码进行二次开发与修改。 使用这些源码,不仅可以节省大量的开发时间和精力,而且还可以获得很好的学习机会,了解其他优秀游戏的设计思路和开发技巧,从而提高自己的开发水平。当然,开发者也可以将这些源码用于商业项目,加速产品的上线和推广。 总之,cocos creator微信小游戏120多套源码的出现,为广大的游戏开发者带来了极大的便利和启示,也让我们更加期待未来cocos creator微信小游戏的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值