• (转)CocosCreator零基础制作游戏《极限跳跃》四、添加游戏主场景控制脚本


    CocosCreator零基础制作游戏《极限跳跃》四、添加游戏主场景控制脚本

     

    前面简单的实现了主界面的UI设置,现在我们开始制作游戏的控制脚本。

    在资源管理器的Script文件夹中,点击右键新建javascript文件,命名为GAME。

    双击打开GAME脚本,在properties: 中添加属性代码。

    01 //GAME.js
    02  
    03 cc.Class({
    04     extends: cc.Component,
    05     properties: {
    06      
    07     // player 节点,用于获取主角弹跳的高度,和控制主角行动开关
    08         player: {
    09             default: null,
    10             type: cc.Node
    11         },
    12         // bgsprite1 节点,用于背景移动
    13         bgsprite1: {
    14             default: null,
    15             type: cc.Node
    16         },
    17         // bgsprite2 节点,用于背景移动
    18         bgsprite2: {
    19             default: null,
    20             type: cc.Node
    21         },
    22         // score label 的引用
    23         scoreDisplay: {
    24             default: null,
    25             type: cc.Label
    26         },
    27       },

    保存好后,我们双击MainScene打开场景,点击Canvas,在右侧的属性检查器最底部,点击[添加组件]=》[添加用户脚本组件]然后选择我们刚刚创建的脚本GAME.js。

    添加好后就可以在属性检查器看到我们的属性组件来,然后我们把场景里的节点拖进对应的属性框即可实现节点绑定。不懂得可以多看看官方文档。

    QQ20160529-12@2x.png

    这样我门就可以在GAME脚本里来操作节点了。

    二、创建HeroPlayer脚本用来操作玩家主角

    01 //HeroPlayer.js
    02  
    03 cc.Class({
    04     extends: cc.Component,
    05     properties: {
    06         //主角跳跃高度
    07         jumpHeight: 0,
    08         //主角跳跃持续时间
    09         jumpTimes: 0,
    10         //掉落速度
    11         maxMoveSpeed: 0,
    12     },
    13     //跳跃
    14     setJumpUpAction: function(){
    15         // 跳跃上升
    16         var jumpUp = cc.moveBy(this.jumpTimes, cc.p(0this.jumpHeight));
    17         //jumpUp.reverse();
    18         return jumpUp;
    19     },
    20     //掉落
    21     setJumpDownAction: function(){
    22         //下落
    23         var jumpDown = cc.moveBy(this.jumpTimes, cc.p(0, - this.maxMoveSpeed));
    24         return jumpDown;
    25     },
    26     setJumpRunAction: function(){
    27         // 初始化跳跃动作
    28         this.jumpAction = this.setJumpUpAction();
    29         //掉落动作
    30         this.maxMoveSpeed = this.setJumpDownAction();
    31         //包装动作
    32         var seq = cc.sequence(this.jumpAction,this.maxMoveSpeed);
    33         this.node.runAction(seq);
    34     },
    35     //玩家不操作时,角色进行下坠
    36     heroDownMove: function(){
    37         //下落
    38         var heroDown = cc.moveBy(0.8, cc.p(0, - 5));
    39         return heroDown;
    40     },
    41     // use this for initialization
    42     onLoad: function () {
    43         
    44         this.setJumpRunAction();
    45          
    46     },
    47  
    48     // called every frame, uncomment this function to activate update callback
    49     update: function (dt) {
    50         this.node.runAction(this.heroDownMove());//精灵移动
    51     }
    52      
    53      
    54 });

    角色有2种状态,一种是玩家点击屏幕会实现角色的跳跃,第二种就是角色会受到引力会自动下落。我们在update来实现自动下落。添加好方法后,我门在层级管理器中点击hero节点。然后在右侧属性检查器中绑定脚本。

    QQ20160529-13@2x.png

    我门可以在里面初始化值。跳跃高度值,跳跃持续时间,掉落速度等。

    脚本里主要实现了跳跃动作,掉落动作等。

    然后回到我们的游戏主脚本也就是GAME脚本。添加触摸事件监听,实现监听触摸来调用主角的跳跃动作。

    首先在顶部添加脚本引用,然后创建事件监听的方法。

    01 //GAME.js
    02 var HeroPlayer = require("HeroPlayer");
    03 //-----
    04 //事件监听
    05     setEventControl: function(){
    06             var self = this;
    07         var hero = self.player.getComponent(HeroPlayer);//角色绑定控件
    08       
    09        cc.eventManager.addListener({
    10             event: cc.EventListener.TOUCH_ONE_BY_ONE,
    11             swallowTouches: true,
    12               // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞没
    13             onTouchBegan: function (touch, event) {
    14                     //实现 onTouchBegan 事件回调函数
    15                 var target = event.getCurrentTarget();
    16                     // 获取事件所绑定的 target
    17                  
    18              var locationInNode = target.convertToNodeSpace(touch.getLocation());
    19              cc.log("当前点击坐标"+locationInNode);
    20                  
    21                 hero.node.runAction(hero.setJumpUpAction());//精灵移动
    22                 //cc.log("跳跃:--------");
    23                  
    24                  
    25                  
    26                 return true;
    27             },
    28             onTouchMoved: function (touch, event) {            // 触摸移动时触发
    29                  
    30             },
    31             onTouchEnded: function (touch, event) {            // 点击事件结束处理
    32                 
    33                 //  cc.log("跳跃后角色坐标:" + self.player.getPosition() );
    34             }
    35          
    36         }, self.node)
    37     },

    然后在onload方法实现初始化调用。

    1  onLoad: function () {
    2         //触摸监听
    3         this.setEventControl();
    4         // 初始化计分
    5         this.score = 0;
    6          
    7     },

    我们可以来运行下,看下效果。

    QQ20160529-14@2x.png

    原文地址:https://www.byjth.com/jixiantiaoyue/69.html

  • 相关阅读:
    外包、构件和黑盒抽象等杂想
    C++类型转换小记(一)——C++转换操作符
    大学(一)
    【答】如何获取一个【备份路径】的信息?
    橘色超漂亮滑动二级导航菜单
    CSS自适应宽度按钮
    我们忽略的IE特效——一些特殊效果
    MSSQL 游标示例
    [存]超酷JS拖拽翻页效果
    漂亮的表格
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/9122815.html
Copyright © 2020-2023  润新知