【问题标题】:Is there a way to check if a force is being applied to an object?有没有办法检查一个力是否被施加到一个物体上?
【发布时间】:2020-10-30 18:02:31
【问题描述】:

我有一个可以向任何方向动态移动的对象。我想以恒定的速度将它拉向设定的方向,但前提是它不沿一般拉动方向移动(不一定平行)。换句话说,如果它向我移动,我不需要拉它。

那么我的问题是;有没有办法检查这个物体是否在这个一般的拉动方向上移动?

【问题讨论】:

  • 你的意思是“在它的速度矢量内有那个力”?力不是“在”速度矢量内。它们甚至没有以相同的单位进行测量...您是说您需要将速度添加到矢量,直到它在某个方向上至少具有一定的速度?
  • @Ruzihm 对不起,你是对的,我会编辑我的问题。我的意思是如果物体的速度向量是C,恒速是B,而A是差值,我如何找到方程A + B = C是否存在?是不是更清楚了?
  • 基础数学,C - (A + B) == 0

标签: c# unity3d math vector game-physics


【解决方案1】:

如果“拉”力施加的方向与当前速度之间的点积大于 1,则速度朝拉力的方向前进。

Vector3 pullDirection;
Vector3 currentVelocity;

bool isMovingInPullDirection = Vector3.Dot(pullDirection, currentVelocity) > 0;

【讨论】:

  • 这一直有效,直到我施加一个力,比如说垂直于恒定速度。然后检查失败。
  • 正如您的澄清所暗示的,力是什么并不重要,只有物体的速度。如果物体的恒定速度为 (1,0,0) 并且物体在 (1,0,0) 处移动并且您施加 (0,0,1) 的力,则速度变为类似于 (1, 0,0.5) 并且它应该返回 true,对吗?
  • 嗯,我想我的澄清是错误的,然后大声笑。好吧,这样想吧;重力是恒定的速度,物体是能够向任何方向移动的宇宙飞船。向任何方向移动宇宙飞船不应改变重力,但重力应该始终存在。我只需要知道如何确定它是否存在。
  • @Bishop Gravity 不是速度,但我想我明白你在说什么。尝试重新构建问题。希望这会有所帮助。
  • 抱歉,我无法解释我的问题,哈哈。我的最后一个比喻不太正确。当物体向源(在本例中为重力源)移动时,力必须停止。我稍微改述了我的问题。在我完成之前没有看到你这样做。感谢您提供的所有帮助。
猜你喜欢
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多