为对象添加力
刚体(Rigidbody)组件允许你对对象施加物理力,使其响应重力、碰撞及其他物理属性。本教程将介绍:
- 为对象添加恒定力
- 为对象添加爆炸力
为对象添加恒定力
为带有刚体的对象添加恒定力:
-
向场景添加对象,并确保对象已附加非网格碰撞体。
-
本教程中,我们通过资产箱(Asset Box)>模型(Models)选择模型Spikes_Normal添加到场景。
-
添加的模型自带网格碰撞体,因此需关闭网格碰撞体并添加球形碰撞体。
-
-
通过 +功能(Feature)>游戏玩法(Gameplay)>**刚体(Rigidbody)**为对象添加刚体组件,使其成为YaEntity。
-
向实体添加如下脚本以施加恒定力。关于如何添加脚本,参见创建或添加脚本。
local selfEntity = script:SelfEntity()
-- 在指定方向施加3000牛顿的力
local force = 3000
local forwardForce = float3.Mul(float3.New(0, 0, 1), force)
-- 启动前延迟0.05秒,每0.1秒施加一次
YaTimeAPI.ScheduleAtInterval(0.05, 0.1, function()
-- 对实体施加力
PhysicsAPI.AddForce(selfEntity, forwardForce)
end)本例中,我们在对象的Z轴正方向施加3000牛顿的力。
-
保存脚本并进入试玩模式。

为对象添加爆炸力
爆炸力是一种球形力,可用于模拟爆炸效果。可调用AddExplosionImpulseForce函数为对象添加爆炸力。
-
向场景添加对象,并确保对象已附加非网格碰撞体。
-
本教程中,我们通过资产箱>模型选择模型Transverse_Roadblocks添加到场景。
-
该模型自带网格碰撞体,因此需关闭网格碰撞体并添加球形碰撞体。
-
-
通过 +功能>游戏玩法>刚体为对象添加刚体组件,使其成为YaEntity。
-
向实体添加如下脚本以施加爆炸力。关于如何添加脚本,参见创建或添加脚本。
local selfEntity = script:SelfEntity()
local cmp = script:GetYaComponent("YaMovableComponent")
local explosionPosition = cmp:GetPosition()
YaTimeAPI.WaitFor(5, function()
PhysicsAPI.AddExplosionImpulseForce(selfEntity, 1000, explosionPosition, 15, 1000)
end)本例中,使用PhysicsAPI.AddExplosionImpulseForce函数为刚体施加爆炸力。5秒后,在指定位置施加1000牛顿的爆炸力,半径为15,并沿y轴方向将物体抬起。
-
保存脚本并进入Play模式。
