RigidBody2D类

RigidBody2D

Inherits: PhysicsBody2D < CollisionObject2D < Node2D < CanvasItem < Node < Object

由2D物理引擎控制的物体。

描述

该节点实现了模拟2D物理。 您不能直接控制RigidBody2D。 取而代之的是对它施加力(重力,脉冲等),然后物理模拟根据其质量,摩擦和其他物理属性来计算最终的运动。

RigidBody2D具有4种行为模式:刚性,静态,角色和运动。

注意:您不应该每隔一帧甚至经常更改RigidBody2D的位置或linear_velocity。 如果您需要直接影响物体的状态,请使用_integrate_forces,它使您可以直接访问物理状态。

还请记住,物理体管理自己的变换,它会覆盖你所设置的变换,所以任何直接或间接的变换(包括节点或父节点的缩放)都只在编辑器中可见,并在运行时立即重置。因此,任何直接或间接的变换(包括节点或其父体的缩放)都将只在编辑器中可见,并在运行时立即重置。

如果你需要覆盖默认的物理行为或在运行时添加一个转换,你可以写一个自定义的力集成。请参阅 custom_integrator。

bool custom_integrator
Default false
Setter set_use_custom_integrator(value)
Getter is_using_custom_integrator()
如果为真,则该物体的内部合力被禁用。除了碰撞响应外,该机体只会按照_integrate_forces函数的决定移动。

void _integrate_forces ( Physics2DDirectBodyState state ) virtual
允许你读取并安全地修改对象的模拟状态。如果你需要直接改变物体的位置或其他物理属性,请使用它来代替Node._physics_process。默认情况下,它除了通常的物理行为外,还可以工作,但custom_integrator允许你禁用默认行为,并为一个体编写自定义的合力。

void apply_impulse ( Vector2 offset, Vector2 impulse )
向物体施加位置脉冲。 脉冲与时间无关! 每帧都施加一个脉冲,就会产生与帧数相关的力。 因此,仅在模拟一次性冲击时才应使用它(否则请使用“ _force”功能)。 该位置使用全局坐标系的旋转,但以对象的原点为中心。

bool test_motion ( Vector2 motion, bool infinite_inertia=true, float margin=0.08, Physics2DTestMotionResult result=null )
如果在给定向量中移动会导致碰撞,则返回true。边距增加了碰撞检测中涉及的形状的大小,结果是一个类型为Physics2DTestMotionResult的对象,它包含关于碰撞的额外信息(如果存在碰撞的话)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值