如何在游戏中使物体更好地运动

时间:2018-06-26 10:22:52

标签: c# unity3d game-engine

我很团结,但是对于第一个项目,我想做类似使者球类游戏的事情,但是对象移动没有什么问题。我想移动like this

但是现在我只有垂直运动了。那么问题是如何以简单的方式将其更改为视频中的球状运动?

void OnMouseDown() 
{
   rb.velocity = Vector2.up * jumpForce;
}

2 个答案:

答案 0 :(得分:3)

您需要测量球的中心与点击点之间的距离。然后,您可以沿测量的相同方向施加力。 请记住,将刚体的运动锁定在z轴上,并用屏幕边界约束球(那些球也可以是刚体-仅在重力= 0时。)

rb.AddForce(transform.up * direction);

文档链接:https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

答案 1 :(得分:1)

与@AdamRoszyk的想法相同,但在RigidBody类中名为AddForceAtPosition的类中有一个针对这种情况的预混合方法:

void OnMouseDown() 
{
   var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition) ;
   rb.AddForceAtPosition(Vector2.up * jumpForce, pos, ForceMode.Impulse);
}