首页 > 解决方案 > 在Unity2d中将rigidbody.velocity设置为鼠标的方向

问题描述

我想知道如何将rigidbody.velocity 设置为统一2d 中鼠标指针的方向。我需要物体的初始速度在那个方向。之后,它会受到重力的影响。这是我尝试过的:

float maxVel = 10f
float posTotal = Input.mousePosition.x + Input.mousePosition.y
float xVel = Input.mousePosition.x / posTotal
float yVel = Input.mousePosition.y / posTotal
Vector3 velTotal = new Vector3(xVel * maxVel, yVel * maxVel, 0)

我反复尝试过,但物体似乎在随机方向发射。

标签: c#unity3dphysics

解决方案


首先,您将两个鼠标轴相加,这不会创建Vector2. 测试它

Debug.Log(Input.mousePostion.x);
Debug.Log(Input.mousePostion.y);
Debug.Log(posTotal);

总和没有什么真正有意义的。

而是使用Camera.ScreenToWorldPoint https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

并像这样从 WorldPoint 中减去 player.position https://docs.unity3d.com/Manual/DirectionDistanceFromOneObjectToAnother.html

得到一个方向。Vector3您可以使用from that 操作在该方向上应用速度。

祝你好运


推荐阅读