如何使游戏中的物体更好地移动
How to make better movement for object in game
我对 unity 很陌生,但对于第一个项目,我想制作类似信使球类游戏的东西,但我在对象移动方面遇到了小问题。我要运动like this
但现在我只有垂直运动。那么问题来了,如何简单的把它改成像视频里那个球一样的运动呢?
void OnMouseDown()
{
rb.velocity = Vector2.up * jumpForce;
}
您需要测量球中心与点击点之间的距离。然后你可以在你测量的相同方向上增加力。
记住在 z 轴上锁定刚体的运动并用屏幕边界约束球(这些也可以是刚体 - 只需重力 = 0)。
rb.AddForce(transform.up * direction);
Link 到文档:https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html
与@AdamRoszyk 相同的想法,但是在 RigidBody
class 中有一个 pre-bluit 统一方法,名为 AddForceAtPosition:
void OnMouseDown()
{
var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition) ;
rb.AddForceAtPosition(Vector2.up * jumpForce, pos, ForceMode.Impulse);
}
我对 unity 很陌生,但对于第一个项目,我想制作类似信使球类游戏的东西,但我在对象移动方面遇到了小问题。我要运动like this
但现在我只有垂直运动。那么问题来了,如何简单的把它改成像视频里那个球一样的运动呢?
void OnMouseDown()
{
rb.velocity = Vector2.up * jumpForce;
}
您需要测量球中心与点击点之间的距离。然后你可以在你测量的相同方向上增加力。 记住在 z 轴上锁定刚体的运动并用屏幕边界约束球(这些也可以是刚体 - 只需重力 = 0)。
rb.AddForce(transform.up * direction);
Link 到文档:https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html
与@AdamRoszyk 相同的想法,但是在 RigidBody
class 中有一个 pre-bluit 统一方法,名为 AddForceAtPosition:
void OnMouseDown()
{
var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition) ;
rb.AddForceAtPosition(Vector2.up * jumpForce, pos, ForceMode.Impulse);
}