gpt4 book ai didi

c# - Unity3D - 通过单击对象将其移动到相反方向

转载 作者:行者123 更新时间:2023-12-02 20:18:14 25 4
gpt4 key购买 nike

我是 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);
}

最佳答案

您必须减去 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);

通过这种方式,您可以找到方向并添加所需的力,如果您也想使用距离作为因子,则不能使用归一化 Vector3。

如果球有碰撞器,您可以在 OnMouseDown 上正确捕获该事件

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html

关于c# - Unity3D - 通过单击对象将其移动到相反方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51957923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com