当前位置:网站首页>D46_给刚体施加的力
D46_给刚体施加的力
2022-08-05 05:18:00 【没那么简单GG】
Rigidbody r;
public int F;
private void Start()
{
r = GetComponent<Rigidbody>();
r.AddForce(Vector3.forward * F, ForceMode.Force);
//v = f * t / m;
//添加一个 持续 的力,并且使用质量
//不同质量的物体运动的速度不同
//物体最终是匀速运动,速度与力的大小和刚体的质量有关
r.AddForce(Vector3.forward * F, ForceMode.Impulse);
//v = f * t / m;
//添加一个 瞬间 的力,并且使用质量
//不同质量的物体运动的速度不同
//物体最终是匀速运动,速度与力的大小和刚体的质量有关
r.AddForce(Vector3.forward * F, ForceMode.VelocityChange);
//v = f * t / m;
//添加一个 瞬间 的力,忽略质量
//物体最终是匀速运动,速度只受到力的大小影响
r.AddForce(Vector3.forward * F, ForceMode.Acceleration);
//v = f * t / m;
//添加一个 持续 的力,忽略质量
//物体最终是匀速运动,速度只受到力的大小影响
r.AddTorque(Vector3.forward * F, ForceMode.Force);
//添加扭矩(世界方向)
r.AddRelativeForce(Vector3.forward * F, ForceMode.Force);
//添加力(自身方向)
r.AddRelativeTorque(Vector3.forward * F, ForceMode.Force);
//添加扭矩(自身方向)
}来个题:
要求实现炸弹爆炸效果
public float radius;
public float force;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//找到爆炸范围内的所有Collider 给需要添加力的物体统一加一个Layer
Collider[] col=Physics.OverlapSphere(transform.position,radius,1<<8);
for (int i = 0; i < col.Length; i++)
{
//找到炸弹和各个游戏物体之间的方向
Vector3 dir = (col[i].transform.position - transform.position).normalized;
//离炸弹最近爆炸力最大=force 离炸弹超过radius(爆炸半径)力最小=0
//距离越远游戏物体受到的冲击力越小 距离越大 t越小
float t = 1 - (Vector3.Distance(transform.position,col[i].transform.position)/radius);
//t限制在0到1之间
t=Mathf.Clamp(t,0,1);
float finalForce = Mathf.Lerp(0,force,t);
//添加一个瞬时的,受质量影响的力
col[i].GetComponent<Rigidbody>().AddForce(dir*finalForce,ForceMode.Impulse);
}
}
}边栏推荐
猜你喜欢
随机推荐
【ts】typescript高阶:联合类型与交叉类型
LeetCode刷题之第86题
八、响应处理——ReturnValueHandler匹配返回值处理器并处理返回值原理解析
硬核!Cocos开发面试必备十问,让你offer拿到手软
每日一题-电话号码的字母组合-0717
huatuo 革命性热更新解决方案系列1·1 为什么这么NB?huatuo革命Unity热更新
UE5再次更新!扫描或手动建模面部模型可直接转为绑定好的Metahuman
【3D模型教程】ZBrush如何表现皮肤纹理?
将一句话的单词进行倒置(C语言纯代码)
成功的独立开发者应对失败&冒名顶替综
电子产品量产工具(4)-UI系统实现
每日一题-最长有效括号-0724
网工必用神器:网络排查工具MTR
C语言入门笔记 —— 函数(1)
电子产品量产工具(5)- 页面系统实现
Jupyter notebook选择不同的Anaconda环境作为内核运行
关于存储IOPS你必须了解的概念
每日一题-括号生成-0721
【ts】typeScript高阶:any和unknown
基于STM32F407的一个温度传感器报警系统(用的是DS18B20温度传感器,4针0.96寸OLED显示屏,并且附带日期显示)









