unity2d给物体施加多大的力或速度才能让物体回到原位?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity2d给物体施加多大的力或速度才能让物体回到原位?相关的知识,希望对你有一定的参考价值。

unity2d,一个物体做自由落体运动,不考虑阻力,撞到地面后停止。如果我让物体撞到地面后弹起来回到最初的位置,请问我要给这个物体施加多大的力?怎么算?

能回到初位置,动量的增量应为 Δmv-(-mv)=2mv
设F为恒力,据动量定理:F.Δt= Δmv=2mv-->F=2mv/Δt ,必须确定Δt方能确定F。追问

Δt怎么确定?下落到地面的时间?

追答

对于出题来说,一般是给出Δt的,所求出的力是平均冲力F,实践中是由经验或实验测定Δt。

参考技术A 这个比较麻烦了。只能是你做一个数据存储,你启用返回原位的功能后,对象的位置回到你记录下来的状态 参考技术B 加速度(Acceleration)是速度变化量与发生这一变化所用时间的比值Δv/Δt,是描述物体速度变化快慢的物理量,通常用a表示,单位是m/s2。加速度是矢量,它的方向是物体速度变化(量)的方向,与合外力的方向相同。
中文名
加速度
外文名
Acceleration
别称
速度变化率
参考技术C 回到原位?追问

比如说物体在地面以上1个单位的位置,自由落体后撞到地面,然后我想让小球回到1m的位置,我应该给他施加多大的力

从移动物体的速度x,y获得旋转角度?

【中文标题】从移动物体的速度x,y获得旋转角度?【英文标题】:getting rotation angle from moving object's speed x,y? 【发布时间】:2013-03-24 12:25:14 【问题描述】:

根据运动物体的速度或运动矢量方向确定运动物体旋转角度的公式是什么?

例如,如果一架飞机从位置 (x0, y0) = (0,0) 向位置 (x1,y1) = (200, 100) 移动,飞机将面向哪个角度?

【问题讨论】:

看看this example。它基本上计算对象必须具有的方向才能遵循给定的路径。 速度是速度增加或减少的速度,它并没有说明物体正在走的曲线。例如,飞机可以走直线,因此角度为 0,但飞机可以走较宽的曲线,使角度为 90... 取决于“旋转角度”的含义。如果您指的是从 (0,0) 发出的光线沿 x 轴和从 (0,0) 发出并穿过 (200,100) 的光线所形成的角度,那么简单的三角函数可以告诉您。如果您的意思是别的意思,恐怕您需要先说出那是什么,然后才能回答您的问题。 这将是 SAS - Side Angle Side trig 感谢您的回复。大声笑我觉得我的数学真的很烂。我的意思是简单地从每秒移动 x:2 y:3 的对象获取角度(0-360 度)。我记得公式很简单,但不记得到底是什么。 【参考方案1】:

旋转角度显然是指方位角。函数Math.atan2(dy, dx) 是正确的方法。在您使用p1 = (x1, y1) = (200,100)p0 = (x0, y0) = (0,0) 的示例中,您需要Math.atan2(y1 - y0, x1 - x0)。这将以弧度返回角度。要转换为度数,请乘以 180 / Math.PI

【讨论】:

+1。假设您使用问题标签在 Flash 中工作,需要记住的一件事是 Math.atan2 返回一个相对于负 x 的角度,但 DisplayObject.rotation 是相对于负 y。【参考方案2】:

要获得两点之间的角度,请将点插入以下代码:

var _radians:Number = Math.atan2(y2-y1, x2-x1);

“_radians”是以弧度为单位的角度。

要旋转一个DisplayObject,你可以在将角度转换为度数后使用它的旋转属性。

var _degrees:Number = _radians * ( 180 / Math.PI );
_displayObject.rotation = _degrees;

您可能需要在旋转中添加一个常量以与您的艺术保持一致。

【讨论】:

是的,这正是我正在寻找的公式。感谢两位的回答。

以上是关于unity2d给物体施加多大的力或速度才能让物体回到原位?的主要内容,如果未能解决你的问题,请参考以下文章

什么是离心力?

如何制作一个不会不加速物体的力SpriteKit Swift

真实物体(固体流体)的微元体应力状态

Unity3D 中3D刚体组件的力

unity2d如何判断高度

unity2D如何动态改变物体的layer