【问题标题】:Throw an object using physics? (Unity)用物理学扔一个物体? (统一)
【发布时间】:2021-04-17 15:45:24
【问题描述】:

所以,我现在已经工作了 4 个多小时,我正在尝试制作一个玩家可以投掷的物体。我想扔它,(不要扔很远,比如 0.5 米),但我似乎无法得到它。我尝试通过刚体添加力,制作动画,然后改变它的变换。如果有人必须做类似的事情,谁能帮助我,如果是,你是怎么做的?

我没有任何代码示例,因为没有任何效果。 (请不要只说刚体,能不能举个例子。谢谢。)

【问题讨论】:

  • 你试过使用 ForceMode.Impulse 吗?
  • 您能否提供一些屏幕截图,可能是您已经尝试过的代码?

标签: c# unity3d game-physics physics


【解决方案1】:

由于声誉问题,我仍然无法添加 cmets,所以这里有一个通用的方法来设置要根据鼠标输入抛出的刚体。

 Camera cam;
 Rigidbody r;
 Vector3 direction = cam.ScreenPointToRay(Input.mousePosition);
 r.AddForce(direction * 100);

代码使用你场景的相机,你要扔的物体的刚体,然后将鼠标输入的屏幕空间转换为光线投射,以获得扔物体的方向,然后在那个方向的那个物体。

如果您的代码看起来像这样,则很有可能您正在其他地方更改对象的速度或变换。它也可能与另一个物体发生碰撞并被停止。

【讨论】:

  • 谢谢,但我一直在寻找更像是当你按下一个按钮时,一个对象会实例化,(我已经做了那部分),然后它会被扔向一个不可改变的方向。这是为了我正在制作的手榴弹,我希望它是一种能够粘住它击中的物体(我也已经这样做了)。
  • @ken 我会生成对象,以便向前方向是您单击的方向。如果您正在实例化对象,则将方向更改为面向您刚刚单击的方向(向前方向),然后只需在 transform.Forward 中添加力即可。它应该按照您之前单击的方向飞行。
  • 我不明白这是什么意思。我刚用了cam.transform.rotation,用你做的更好吗?
  • 你能发布你用于添加力的代码sn-p吗? add force 以什么方式不起作用?我会尝试上面的 sn-p,但在加力之前,将方向更改为您正在寻找的正向。
  • 实例化(GrenadeObject, transform.position, PlayerRot.rotation, GrenadeParent);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多