绳关节(b2RopeJoint)
package{
import Box2D.Collision.b2AABB;
import Box2D.Collision.b2RayCastInput;
import Box2D.Collision.b2RayCastOutput;
import Box2D.Collision.Shapes.b2CircleShape;
import Box2D.Collision.Shapes.b2PolygonShape;
import Box2D.Collision.Shapes.b2Shape;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2Fixture;
import Box2D.Dynamics.b2FixtureDef;
import Box2D.Dynamics.b2World;
import flash.display.Sprite;
import flash.utils.getTimer;
import Box2D.Dynamics.Joints.b2PulleyJoint;
import Box2D.Dynamics.Joints.b2PulleyJointDef;
import Box2D.Dynamics.Joints.b2RopeJointDef;
import Box2D.Dynamics.Joints.b2RopeJoint; //出现脱节时,调velocityIterations, positionIterations
//_world.Step(1/30,128,128);
public class Main extends BaseMain{ public function Main(){
super(new b2Vec2(0,10));
} private const ropeW:Number=20;
private const ropeH:Number=20; override protected function init():void{
var bodies:Vector.<b2Body>=new Vector.<b2Body>();
var i:int;
for(i=0;i<10;i++){
var body:b2Body=createBox(ropeW,ropeH,400+i*ropeW,100);
bodies[i]=body;
if(i>0){
var bodyA:b2Body=bodies[i-1];
var bodyB:b2Body=bodies[i];
var halfW:Number=ropeW*0.5/_ptm_ratio;
var anchorA:b2Vec2=new b2Vec2(bodyA.GetPosition().x+halfW,bodyA.GetPosition().y);
var anchorB:b2Vec2=new b2Vec2(bodyB.GetPosition().x-halfW,bodyB.GetPosition().y);
var maxLength:Number=0.1;
createRopeJoint(bodyA,bodyB,anchorA,anchorB,maxLength);
}
}
bodies[0].SetType(b2Body.b2_staticBody); var bigBox:b2Body=createBox(400,400,400+i*ropeW,100);
bigBox.SetSensor(true);
createRopeJoint(bodies[bodies.length-1],bigBox,
new b2Vec2(bodies[bodies.length-1].GetPosition().x+halfW,bodies[bodies.length-1].GetPosition().y),//anchorA
new b2Vec2(bigBox.GetPosition().x-200/_ptm_ratio,bigBox.GetPosition().y),//anchorB
0.1);//maxLength
} private function createRopeJoint(bodyA:b2Body,bodyB:b2Body,anchorA:b2Vec2,anchorB:b2Vec2,maxLength:Number):void{
var jointDef:b2RopeJointDef=new b2RopeJointDef();
jointDef.Initialize(bodyA,bodyB,anchorA,anchorB,maxLength);
jointDef.length=5;
b2RopeJoint(_world.CreateJoint(jointDef));
} override protected function stepBefore():void{ } };
}
源码下载:http://pan.baidu.com/s/1jIjpjIu
绳关节(b2RopeJoint)的更多相关文章
- Box2D淌坑日记: 关节(Joint)和旋转关节(b2RevoluteJoint)
关节在Box2D的对象组织结构中,与b2Body(刚体)并列.因此两种对象都是由b2World创建并直接管理. 然而Joint有依赖于b2Body的地方,就是它的销毁:当关节所涉及到的刚体被销毁,关节 ...
- Unity 物理引擎动力学关节
Unity物理引擎中的各个动力学关节 Hinge Joint (铰链关节) Fixed Joint (固定关节) Spring Joint (弹簧关节) Character Joint(角色关节) C ...
- box2dweb之关节joint(连接器)
1 概述 前篇基础文章看完后基本上就应该对box2dweb能上手了,下面来介绍一下box2dweb非常重要的一个概念,关节(joint)也有叫连接器的,总之是一个意思.下面是关节详细的类库说明: BO ...
- 实例介绍Cocos2d-x中Box2D物理引擎:使用关节
下面我们将使用Box2D物理引擎技术进行重构.使得关节能够掌握如何在Box2D使用关节约束.HelloWorldScene.cpp中与使用关节的相关代码如下: void HelloWorld::add ...
- 实例介绍Cocos2d-x物理引擎:使用关节
在游戏中我们可以通过关节约束两个物体的运动.我们通过一个距离关节实例,介绍一下如何在使用关节. 这个实例的运行后的场景如图所示,当场景启动后,玩家可以触摸点击屏幕,每次触摸时候,就会在触摸点和附近生成 ...
- 关于FPGA异步时钟采样--结绳法的点点滴滴
一.典型方法 典型方法即双锁存器法,第一个锁存器可能出现亚稳态,但是第二个锁存器出现亚稳态的几率已经降到非常小,双锁存器虽然不能完全根除亚稳态的出现(事实上所有电路都无法根除,只能尽可能降低亚稳态的出 ...
- Unity中的关节
关节组件一共分为5大类,它们分别是链条关节.固定关节.弹簧关节.角色关节和可配置关节.链条关节(Hinge Joint):将两个物体以链条的形式绑在一起,当力量过大超过链条的固定力矩时,两个物体就会产 ...
- libgdx, mouse 关节
鼠标与body的交互就靠这个mouse 关节了. 在使用中:主要分成3步: 步1:mouseDown : 这个时期,调用world->QueryAABB.它有一个回调接口,并依据鼠标指针指定一个 ...
- 【Unity 3D】学习笔记四十一:关节
关节 关节组件能够加入至多个游戏对象中,而加入关节的游戏对象将通过关节连接在一起而且感觉连带的物理效果.须要注意的是:关节必须依赖于刚体组件. 关节介绍 关节一共分为5大类:链条关节,固定关节,弹簧关 ...
随机推荐
- 【汇编】字符串处理指令 stosb、lodsb、movsw、scasb、rep
一.字符串处理指令 (1) lodsb.lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI (2) stosb.stosw:把AL或AX中的数据装入ES:DI指向的 ...
- C#:using与.net对象销毁
一 . 1.using 语句获取一个或多个资源,执行一个语句,然后处置该资源. 2.using 语句: using ( 资源获取 ) 嵌入语句 3.资源获取: 局部变量声明 表达式 资源是实现 ...
- Java 实现下载
效果就是点击就可以下载到本机. 前台代码示例 后台代码示例 前台代码示例 <a target='_self' href='../downTask/downloadFileToLocal?file ...
- 构建jenkins
一.Jenkins简介: jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用户监控秩序重复的工作,包括: 1>持续的软件版本发布测试项目. 2>监控外部调 ...
- 五、RDD持久化
Spark最重要的一个功能是它可以通过各种操作(operations)持久化(或者缓存)一个集合到内存中.当你持久化一个RDD的时候,每一个节点都将参与计算的所有分区数据存储到内存中,并且这些数据可以 ...
- C++ STD inner_product函数
C++ STD函数 inner_product是c++标准库封装的一个函数. 函数原型: 函数1: inner_product(beg1, end1, beg2, init) 函数2: inner ...
- Dockerfile文件格式的简单介绍
# This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command form ...
- empty,is_null,isset返回值的比较
empty,is_null,isset返回值的比较: 变量 empty is_null isset$a="& ...
- RPC 框架原理详解
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用?也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网 ...
- sql 查询表共多少列
1.oracle: select count(*) from user_tab_cols where table_name='表名';--表名含英文的话应为英文大写字母 2.mysql: select ...