1 applyForce/ToCenter(). 这个力怎么计算 (牛顿第二定律F=ma)
2 .linearVelocity()是像素/米 (看源码)
3 why到第四帧才有速度

CocosCreator官方文档物理引擎Demo(physics-example,下载链接:https://github.com/2youyou2/physics-example)

---------------------------汤姆猫水上乐园坑:
1 长方形是保卫盒==AABB框
2 无法通过动画修改刚体位置,如何移动刚体? / 台球杆提示条 / 提示条动画播指定帧
3 有问题需求证。新建个Demo就是。 如:何刚体能否穿过别的刚体

7 碰撞后刚体如何设置静止? 可以删除原来的,重新创建一个
8 碰撞回调里不能修改属性位置/旋转. Or报错:Assertion failed! Pls debug.
是因为: 锁定了(world.IsLocked()),需要在时间步Step后去操作 解决:update里判断为true的时候改变位置
---------------------切水果
1 MotionStreak(拖尾)/RichText(富文本 新浪微博功能) 组件 + 插件脚本
2 从对象池创建对象,施加力/冲量时要先清空/重置之前速度。 bug:问3程序
3 切水果:可以only一小部分用Box2d
4 精灵绕中心轴旋转? /LabelOutline(字体描边)组建

5 Scroview问题:1content中item尺寸为(0,0)导致显示部分Ui 2LayOut的ResizeMode属性==1显示部分UI
6 XX.getComponent(cc.PhysicsCircleCollider).offset = cc.v2(_x, _y); // bug: offset要在addchild渲染前调,才生效
7 setTimeout/pomelo.on/wx.onShow()…切换场景后一样会调用
8 子域报错:XXXundefined js声明提前 (self = this 函数内会修改this)
------------------------微信打包
1 运行wx.is not defined ? 答案:判断下平台if /官方文档:旋转缩放信息
2 打包到微信平台时 Box2d相关的接口提示都招不到? —设置->模块
3 包体过大? 答案: 将“设置->模块”中无用的去掉减少2Mb多
----------------------后期:
1 刚体无法运动, 因为:applyForec/Impluse时间太短 在update就ok
2 cocos实现翻牌: 动作 反面牌(1,1)->(0,0.9) 正面牌(0, 0.9)->(1,1)
3 creator拼UI–logic混乱: 金币+红包2个并行节点+总结node / 放入效果图 ***
4 微信请求openID失败,困扰3月。把htpp请求的URL手动拼接,问题没有 ?&格式错误


官网文档是如此介绍applyForceToCenter(),

applyForceToCenter

施加一个力到刚体上的质心上。
meta
description
定义于
https:/github.com/cocos-creator/engine/blob/master/cocos2d/core/physics/CCRigidBody.js:683
参数列表

force Vec2 the world force vector.
wake Boolean also wake up the body.

咋看,第一个参数force传的是一个力的向量,如cc.v2(0, 100),就是施加了一个竖直向上100牛顿的力。

翻到applyForceToCenter()的源码
/**

  • !#en
  • Apply a force to the center of mass.
  • !#zh
  • 施加一个力到刚体上的质心上。
  • @method applyForceToCenter
  • @param {Vec2} force - the world force vector.
  • @param {Boolean} wake - also wake up the body.
    */
    applyForceToCenter: function (force, wake) {
    if (this._b2Body) {
    tempb2Vec21.Set(force.x/PTM_RATIO, force.y/PTM_RATIO);
    this._b2Body.ApplyForceToCenter(tempb2Vec21, wake);
    }
    },

tempb2Vec21.Set(force.x/PTM_RATIO, force.y/PTM_RATIO);
这行代码中"force.x/PTM_RATIO" , 除以PTM_RATIO,而PTM_RATIO的值为32。

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

打开上面的链接,里面有介绍。
物理单位到像素单位的转换 :
box2d 使用 米-千克-秒(MDS) 单位制,box2d 在这样的单位制下运算的表现是最佳的。 但是我们在 2D 游戏运算中一般使用 像素 来作为长度单位制,所以我们需要一个比率来进行物理单位到像素单位上的相互转换。 一般情况下我们把这个比率设置为 32,这个值可以通过 cc.PhysicsManager.PTM_RATIO 获取,并且这个值是只读的。 通常用户是不需要关心这个值的,物理系统内部会自动对物理单位与像素单位进行转换,用户访问和设置的都是进行 2d 游戏开发中所熟悉的像素单位。
设置物理重力
重力是物理表现中非常重要的一点,大部分物理游戏都会使用到重力这一物理特性。 默认的重力加速度是 (0, -320) 像素/秒^2,按照上面描述的转换规则,即 (0, -10) 米/秒^2。

    由此可见,像素单位转换为物理单位,是除以PTM_RATIO的;而物理单位转换为像素单位,是乘以PTM_RATIO的。Box2D 中的坐标系统的单位是米(m)因此,applyForceToCenter()方法的第一个参数的力是以" 像素/秒^2"为单位算出来胡.

http://alexq.farbox.com/post/box2d-ru-men-jian-yao
这篇文章中,有讲到:

重力,简单的讲,就是使物体自然下落的力,Box2D 用 Vector2 向量类来模拟作用力。Vector2 是 “Box2D Vector2D”的缩写,表示二维空间中的一个向量,Vector2 类的构造函数中只有 x 和 y 两个
参数,分别表示 x 轴和 y 轴方向上的分量。

new Vector2(x, y)
对于C++,重力方向参考如下:

因为重力是垂直向下的,在水平方向没有任何力,所以 x 设置为 0,这个不难理解。至于y的参数值-9.8,实际上,这里的y指的是重力加速度,我们读高中时都学过,在没有任何阻力影响的情况, 理论的重力加速度是 9.8m/s2(米每平方秒)。 Box2D 中的坐标系统的单位是米(m) 这点很重要 这点很重要 这点很重要

重力是物理表现中非常重要的一点,大部分物理游戏都会使用到重力这一物理特性。 默认的重力加速度是 (0, -320) 像素/秒^2,按照物理单位和像素单位的转换规则,即 (0, -10) 米/秒^2。

onLoad () {
var physicsManager = cc.director.getPhysicsManager();
physicsManager.enabled = true;
physicsManager.enabledAccumulator = true;
this.gravity = physicsManager.gravity;
cc.log(“gravity(%f, %f)”, this.gravity.x, this.gravity.y);
cc.director.getCollisionManager().enabled = true;
this.enablePhysicsDebugDraw();

this.rigidbody = this.node.getComponent(cc.RigidBody);

},

start () {
var m = this.rigidbody.getMass();
var a = cc.v2(this.gravity.x, Math.abs(this.gravity.y)*10);
var force = a.mul(m);
this.rigidbody.applyForceToCenter(force, true);

cc.log("a(%f, %f) (%f, %f)", a.x, a.y, a.x/32, a.y/32);
cc.log("stone mass = %f", m);cc.log("force(%f, %f)", force.x, force.y);

},

update (dt) {
var speed = this.rigidbody.linearVelocity;
cc.log(“dt=%f speed(%f, %f)”, dt, speed.x, speed.y);
cc.log(“position(%f, %f)”, this.node.x, this.node.y);
},

日志打印出,石头的质量为 5.46875kg, 那么石头受到的重力为 5.46875 x 10 = 54.6875 牛顿。

var a = cc.v2(this.gravity.x, Math.abs(this.gravity.y)*10); // 加速度(0, 3200)
var force = a.mul(m);

给一个加速度a(0, 3200) ,这里的单位是像素/秒^2, 转换为物理单位后,为100 米/秒^2,那么受到一个竖直向上的546.875牛顿的力,合算后,石头的加速度为 90 米/秒^2

日志中的 "speed(0, 48)"的速度是以像素/秒为单位的, 转换为物理单位后为 1.5 米/秒。由公式“v1 = v0 + at”计算可得,时间约为 0.016666秒


1 时间约为 0.016666秒。 可以推出理论是正确的
2


最近总结了下CocosCreator的技术框架结构,如图:

--------------------------------svn冲突
meta文件:
作用:用于资源管理
冲突:因为相同资源,但是每位开发者UUid不同
解决:一并提交SVN。(meta变动 但资源未使用过,不能提交)

---------------------------------2018.7.25
http://docs.cocos.com/creator/manual/zh/getting-started/quick-start.html

--------------------2018.8.26
模拟旋转台球球杆时提示条也旋转
cc.Class({
extends: cc.Component,

properties:{t:cc.Node
},// 2个点差值---转换弧度---转换角度
start:function(){this.node.on(cc.Node.EventType.TOUCH_MOVE,function(e){var pos = e.getLocation();   //坐标系要一致var y = pos.y - 100;//canvas下还是本地坐标,(100,100)该节点的世界坐标var x = pos.x - 100;//var rotation = Math.atan(x/y) * 180 / Math.PI;  //得到触摸点和arrow出生点之间的夹角角度弧度if(y < 0){rotation += 180;              // 下面时相反 分析 正好差180度}rotation += 180;           //分析 正好差180度 (提示条正好相反)this.t.rotation = rotation;}.bind(this));
}

});

CocosCreator物理引擎Demo源码分析(3)-stick-arrow –

------------------刚体施加力/冲量方向有误差:

    var newc=cc.p(0, 1).rotate(-Math.abs((this.gun.node.rotation + 7)%360)*Math.PI/180);   //切水果炮筒在旋转(导致打歪)var _dir1 = cc.p(_stPos1.x-_stPos2.x, _stPos1.y-_stPos2.y);    //汤姆猫没有旋转

官方Demo:

-------------------龙骨(DragonBone)动画
基本概念:
1 API: 看白鹭API文档
2 骨骼–>插槽—>图片
骨骼下面–卡槽—可有多个图片 (同一时间only能显示一张图片)
3 (Egret之龙骨卡槽(slot)换皮)

this._armatureDisPlay = cc.find(“X”).getComponent(dragonBones.ArmatureDisplay) //获取 ArmatureDisplay
this._armature = this._armatureDisPlay.armature(); //获取 Armatrue

this._armatureDisPlay.armatureName = “mecha_1502b”
this._armatureDisPlay.animationName = “walk”
this._armature = this._armatureDisPlay.armature();

// var _t =  this._armature.animation.fadeIn('walk', -1, -1, 0, 'hit');
// _t.playTimes = 1;
// var _tt = _t.totalTime;
// var  _ttt = _t.currentTime;
// // _t.currentTime = 1.2;  //等于从指定时间开始播放
var _test = this._armature.animation.gotoAndStopByTime("walk", 0.9);//将动画停止到指定的时间。
------------------------------------------------------------------------------- (备注:实现换装)
this._armature.getSlot("face").displayIndex = -1;           // 隐藏或者显示插槽(-1不显示  0显示第一张图片  1显示第二张图片 2....)


遇到坑:(不显示)
1 卡槽下图片名字和资源的名字要一样
2 导出的版本号不能太高 可选4.5
3 cavans模式不支持mesh(网格)


--------------------2018.8~9 WeChat命名规则
set get:属性方法
on off: 注册 反注册

--------------------2018.11
发不到微信平台,找不到路径。 因为未配置环境

--------------------2019.1.3
1 场景加载策略:异步加载极大提升scene加载速度
director.pause/resume();会导致切换场景后逻辑不会执行. 整了好久
2 ccc粒子特效2种方式:A使用Plist png B使用组件自定义
--------------------2018.8 坦克
1 Log格式 2原始 变化后 包含子节点边框 3active才会触发T方法
console.log("----hegith:%f boundingBox:%f getBoundingBoxToWorld:%f" ,this.node.height ,this.node.getBoundingBox().height ,this.node.getBoundingBoxToWorld().height);

2 动作 定时器使用前先销毁。stopAllAction/unschedule

3 测试性能/卡顿
var time = new Date().getTime();
console.error("---------time:"+ (new Date().getTime() - time)); //每次new耗内存
3

creator物理引擎 /RPG运动类型 /坦克相关推荐

  1. CreatorPrimer | 物理小游戏(物理引擎管理器)

    前面两篇我们介绍了物理投篮小游戏的界面布局.物理组件的基本使用方法,从今天开始进入编程篇的内容.难度在逐渐加深,为了不给大家造成阅读负担,程序篇会分成多次来讲,每篇教程尽量简单,就算没有编程基础,跟着 ...

  2. Cocos2d-x 3.x物理引擎概述(2)

    2019独角兽企业重金招聘Python工程师标准>>> 碰撞 你是否经历过车祸?是否跟什么物体相撞过?就像车一样,物理刚体对象可以互相接触.当它们接触的时候,就发生了碰撞.当碰撞发生 ...

  3. Cocos Creator实战教程(5)】——打砖块(物理引擎,碰撞检测)

    1. 知识点 物理引擎 碰撞检测 2. 步骤 2.1 准备工作 搭一个游戏背景 2.2 小球运动 再建一个物理层,用来装游戏里的带有物理属性的东西,设置锚点为左下角 wall:墙//小球碰到就会反弹的 ...

  4. Three.js物理引擎与物体的相互作用——关联材质对摩擦力弹性影响、物体运动方式、作用力相关

    vetor new CANNON.ContactMaterial构造方法用于设置Three.物理世界两种材质碰撞的参数 const defaultContactMaterial = new CANNO ...

  5. Cocos Creator游戏引擎可以支持鼠标吗_Cocos Creator入门实战:桌球小游戏

    本文作者:BigBear 多年游戏行业研发经验 精通Unreal.CocosCreator游戏引擎 参与过多款手游.端游项目的研发 Cocos Creator入门实战:桌球小游戏 本篇主要是希望能够通 ...

  6. 游戏引擎开发和物理引擎_视频游戏开发的最佳游戏引擎

    游戏引擎开发和物理引擎 In this article, we'll look at some of the most popular game engines for video game deve ...

  7. Egret中使用P2物理引擎

    游戏中的对象按照物理规律移动,体现重力.引力.反作用力.加速度等物体特性,实现自由落体.摇摆运动.抛物线运动,以及物理碰撞现象的模拟.用于模拟物理碰撞.物理运动的引擎称为物理引擎.  来自瑞典斯德哥尔 ...

  8. 关于碰撞检测和物理引擎

    早期3D游戏的碰撞检测多数基于格子或者BSP树,基于格子的系统实现简单但精度不够,不属于严格意义的3D碰撞检测.基于BSP树的碰撞检测一度十分流行,算法基本已经成熟定型,但是BSP树需要很长的预处理时 ...

  9. 最全的iOS物理引擎demo

    概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ...

最新文章

  1. 【移动开发】Android中强大的适配功能----Fragment(碎片)总结
  2. Spring boot的profile文件
  3. SAP Data Intelligence上的Python Operator
  4. Android官方开发文档Training系列课程中文版:管理系统UI之隐藏状态条
  5. C++高级进阶教程之STL 教程
  6. linux启动清除指定内存,柴少鹏的官方网站
  7. _Linux中删除特殊名称文件的多种方式
  8. BZOJ2592: [Usaco2012 Feb]Symmetry
  9. 微信小程序-使用ColorUI
  10. STM32采用串口DMA方式,发送数据
  11. 迅雷离线下载脚本 — LinuxTOY
  12. kicad最小布线宽度默认是多少_常见停车场管理系统项目的安装布线及注意事项...
  13. 微信好友排行榜 最简教程 一
  14. 腾讯地图api_让数据跃然“图”上!腾讯位置服务数据可视化API正式发布
  15. 计算机都学什么数学,计算机专业的数学应学到什么水平?应该学习数学的那些分支?...
  16. 操作系统 - Linux - Ubuntu
  17. 【pandas 类库】
  18. 湖南科技大学计算机技术专硕,2021年湖南科技大学电子信息(085400)计算机技术_考研专业目录_考试科目_考试范围 - 学途吧...
  19. 王叁寿:大数据是传统信息化厂商的掘墓人
  20. 堡垒机拓扑图_fanzhenlong/堡垒机部署方案总结.md at master · leadsino/fanzhenlong · GitHub...

热门文章

  1. postman的批量传送数据和接口关联
  2. 开源之道给您拜年啦~~
  3. 献给爱折腾的你:虚拟机VMware安装macOS15 Catalina 附已经装好的系统(打开即用)
  4. Android 11何时进入手机,以及如何安装?
  5. Java期末作业-各种系统设计
  6. 黑苹果 双系统 macos 与Windows蓝牙设备共享
  7. 河南理工大学matlab,有没有会MATLAB的大神
  8. final变量要么定义时初始化,要么在代码块中初始化
  9. Echarts 饼图设置标签颜色(单个标签颜色、多个标签颜色)
  10. ai人工智能_人工智能已经如何统治世界