内容纲要

调整星星弹性系数:

使得星星跳跃高度发生改变,具体操作:点击player,将Gravity Scale设置为3。重力加速度变大,向下的速度变快。

16-StartCatcher-用物理系统实现按左右键移动插图

上节课遗留问题:

  1. rb.linerVelocity=cc.v2(0,0);//向下的速度调成0;
  2. 若是单独设置为rb.linerVelocity.y=0;则无效;
  3. 与C#中的struct一致,不能单独的对每一个成员进行赋值,应该对整体进行赋值。
  4. 点击查看:点击RigidBody,按下Ctrl+f搜素,输入linerVelocity,点到Vec2,按下Ctrl进入查看,显示Vec2为class,此处class与C#struct一致

具体操作:

  1. 将keyDown(event)中this.accLeft=true;与this.accRight=true注掉;将keyUp(event)中this.accLeft=false;与this.accRight=true注掉;将update(dt)中的代码全部注掉。
  2. 施加冲量:applyLinearImpulse方法

  3. 修改代码:在

keyDown(event){
    console.log('keyDown('+event.keyCode+')');
    var rb=this.getComponent(cc.RigidBody);
    //rb.linerVelocity=cc.v2(0,0);速度清零的代码注掉,保证长按a,d键时,人物仍会弹起来
    switch(event.keyCode)
    {
        case cc.KEY.a:
            rb.applyLinearImpulse(cc.v2(-150,0),rb.getWorldCenter());
            //采用applyLinearImpulse时,因为可以一直按a,d键,所以人物会飞出去.
            break;
        case cc.KEY.d:
            rb.applyLinearImpulse(cc.v2(150,0),rb.getWorldCenter());
            break;
    }
},

  • 考虑不采用冲量的方式,让人物的速度可以缓慢的增加。使用applyForceToCenter(施加一个力当刚体的质心上)
    //rb.applyForceToCenter(cc.v2(-300,0),true);
    //此方法仍然无法实现,放弃。

  • 仍然使用applyLinearImpulse方法,先注掉Update中原来的代码,并将-300,修改为150,减少按下a键时,人物的向左的力,同理,将300修改为150,在update中做出如下修改:

update(dt)
{
    var rb=this.getComponent(cc.RigidBody);
    var v=rb.linearVelocity;//将一个线性的速度取出来,放到v里面
    //限速
    if(Math.abs(v.x)>this.maxMoveSpeed)
    //横向速度的绝对值大于最大移动速度,就将rb.linearVelocity设置为最大速度
    {
        rb.linearVelocity = cc.v2(this.maxMoveSpeed*Math.sign(v.x),v.y);
    //因为最大速度是正值,所以要乘一个左或右方向,保证其有正负值,取方向使用sign
    }
}

1 对 “16-StartCatcher-用物理系统实现按左右键移动”的想法;

  1. Pingback: viagra

发表评论