Nape "不动"刚体的碰撞交互

"不动"刚体,这里指的是以下两类刚体:

1.刚体的allowMovement和allowRotation都设false的刚体

2.KINEMATIC类型的刚体

如下代码,测试发现输出面板没有内容输出,侦听不到两者的碰撞。

 1 package  {
 2     import nape.callbacks.CbEvent;
 3     import nape.callbacks.CbType;
 4     import nape.callbacks.InteractionCallback;
 5     import nape.callbacks.InteractionListener;
 6     import nape.callbacks.InteractionType;
 7     import nape.phys.Body;
 8     import nape.phys.BodyType;
 9     import com.bit101.components.TextArea;
10
11     public class Main extends BaseMain {
12
13         public function Main() {
14             super({gravity:{x:0,y:0}});
15         }
16         private var _textArea:TextArea;
17         private const C_A:CbType = new CbType();
18         private const C_B:CbType = new CbType();
19         override protected function createBodies():void {
20             var body1:Body=createBox(30,30,80,200);
21             body1.cbTypes.add(C_A);
22             body1.allowMovement = body1.allowRotation=false;//不允许移动、旋转
23             body1.velocity.x=300;
24             body1.space = _space;
25
26             var body11:Body=createBox(30,30,50,300);
27             body11.cbTypes.add(C_A);
28             body11.type = BodyType.KINEMATIC;//设为KINEMATIC刚体类型
29             body11.velocity.x=300;
30             body11.space = _space;
31
32             var body2:Body = createBox(30,300,400,200);
33             body2.cbTypes.add(C_B);
34             body2.type = BodyType.STATIC;
35             body2.space = _space;
36
37             _space.listeners.add(new InteractionListener(CbEvent.BEGIN,InteractionType.COLLISION,C_A,C_B,a_bHandler));
38
39             _textArea = new TextArea(this);
40             print("check begin.....");
41         }
42
43         private function print(text:String):void{
44             _textArea.text+=text+"\n"
45         }
46
47         private function a_bHandler(cb:InteractionCallback):void{
48             print("hit");
49         }
50
51     }
52
53 }

源码下载:http://yunpan.cn/cmXEYfHw7DbJF  访问密码 b60d

时间: 2024-07-29 04:32:36

Nape "不动"刚体的碰撞交互的相关文章

u3d中刚体与碰撞体的理解以及is Trigger属性的意义

刚体:个人理解就是具有物理属性(如:质量),接受物理作用(如:重力)的组件. 碰撞体:个人理解就是计算碰撞后的物理量(如:弹力). 刚体与碰撞体的关系:个人理解判断碰撞体就是需要计算力,如果碰撞的物体有刚体组件,那么该物体就会在碰撞体计算出的力的作用下运动.如果这个物体没有刚体,那么碰撞体产生的力就没有了受体,也就没有任何意义了. 碰撞事件产生条件:得出的结论似乎是如果碰撞双方只有一个有刚体,那么那个刚体一定要处于激活状态(什么是激活状态,我需要继续学习)下才会有碰撞事件发生. is Trigg

unity3d中的trigger和collision消息以及刚体与碰撞体

一直困惑于unity3d中的触发和碰撞消息在什么条件下能够发生,平时用时也是一知半解.磨刀不误砍柴工,是时候发点时间一劳永逸的解决这个问题了XD. OnTriggerEnter, OnTriggerStay, OnTriggerExit 是为触发类消息,记为trigger OnCollisionEnter, OnCollisionStay, OnCollisionExit是为碰撞类消息, 记为collision None表示两类消息都没发生 如果对象有刚体(rigidbody)且其 IsKine

关于Unity中的刚体和碰撞器的相关用法

1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObject节点 5.给Plane贴上图片,Sphere贴上材质 6.运行,发现球在空中静止,因为没有添加受力体,也就是刚体组件Rigidbody,添加后运行,球从空中掉到平面上,前提是两者都已经有Collider碰撞器组件,否则只要一方没有Collider就会穿过彼此. Rigidbody组件属性 1.

创建简单的Nape刚体

在认识Nape空间里,看我们了解了这个2D物理引擎,并学习了如何创建一个基本的Nape应用,今天我们来学习一下如何创建一些简单的Nape刚体. 运动与静止的刚体 和Box2D一样,Nape中的也分为静止和运动刚体,对应静止的刚体将不进行物理运动模拟,这样可以节省CPU的开支.我们可以通过刚体的type属性设置刚体的类型,这个属性值可以是DYNAMIC.STATIC或KINEMATIC,分别表示运动的.静止的和不受力作用但可以运动的静态刚体. 1 var body:Body = new Body(

使用filter筛选刚体碰撞

有时候需要避免刚体间的碰撞,那么可以使用filter.它是框架的一个属性,提供了碰撞筛选功能.用法比较有意思,经过了多次的试错,才找到其规则,因此有必要进行一些总结. filter有三个属性,可以从引擎源代码得知: struct b2Filter { b2Filter() { categoryBits = 0x0001; maskBits = 0xFFFF; groupIndex = 0; } /// The collision category bits. Normally you would

转载 unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger)

和好的文章,有一些原作者的结论很经典. 刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动.任何游戏对象只有添加了刚体组件才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件. 个人理解就是刚体是用来模拟物体受到一个力作用

Bullet 刚体与软体的碰撞 collisions between rigidbody and softbody in Bullet

上一篇文章做了一个bullet刚体自由落体的模拟,这篇文章模拟软体与刚体的碰撞,并且让软体保持碰撞后的形状.关于软体的参数配置如下: btSoftBody::Config : btSoftBody::Config::aeromodel; // Aerodynamic model (default: V_Point) define what kind feature is used to compute aerodynamic forces. btSoftBody::Config::kVCF; /

Unity3DGUI:刚体碰撞及消息传递

刚体间碰撞:OnCollisionEnter()方法只能写在碰撞主动方的js里 下图为不同特性物体碰撞,Collision碰撞式信息传递是否可用 触发碰撞模式:OnTriggerEnter()方法只能写在只能写在碰撞主动方的js里,另外碰撞的物体 is Trigger 需要勾选 下图为不同特性的物体间碰撞,Trigger触发式信息传递是否可用

Unity3D 碰撞关系表 (转)

几个类型碰撞器: 1. 静态碰撞器: 就是只有碰撞器,但没有刚体的 2.刚体碰撞器: 带Rigidbody的碰撞器,这个是最基本的碰撞器 3.运动学刚体碰撞器: 带Rigidbody, 而且Rigidbody的IsKinematic打勾的,注意这个碰撞器是不能加力的,只能修改他的transform才能移动 Triggers 触发器 仅需要选中Inspector中的IsTrigger属性选择框.触发器不受物理引擎控制,当和一个触发器发生碰撞时会发出三个独特的触发信息,为了使两个触发器碰撞时发出碰撞