Мар*_*мов 2 c# unity-game-engine
我是 Unity 新手,正在开发一个简单的项目,但我陷入了困境。
所以我的想法是,当玩家接触球的底部时,它会向相反的方向移动。就像在现实生活中一样,如果你在底部踢球,它就会上升,但在 2D 版本中。
我尝试找到玩家触球的相反点,并通过减去原始点和相反点来制作一个向量,然后施加力来移动球,但它不起作用。
void MoveBall()
{
x = mouseClickPosition.x;
y = mouseClickPosition.y;
oppositeClickPosition.x = -x;
oppositeClickPosition.y = -y;
Vector2 direction = oppositeClickPosition - mouseClickPosition;
rb.AddForce(direction * force, ForceMode.Impulse);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您必须减去 mousePosition 和球的中心。
Vector3 clickedPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Vector3 ballCenter = ballTransform.position;
// If this goes the opposite direction just swap the values.
Vector3 forceDirection = (ballCenter - clickedPosition).normalized;
ballRigidbody.AddForce (forceDirection * strength, ForceMode.Impulse);
Run Code Online (Sandbox Code Playgroud)
normalized通过这种方式,您可以找到方向并添加所需的力,如果您也想使用距离作为因素,则不能使用 Vector3 。
如果球有碰撞器,您可以在 OnMouseDown 上正确捕获该事件
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html
| 归档时间: |
|
| 查看次数: |
3859 次 |
| 最近记录: |