c# - 在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)
我反复尝试过,但物体似乎在随机方向发射。
解决方案
首先,您将两个鼠标轴相加,这不会创建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 操作在该方向上应用速度。
祝你好运
推荐阅读
- node.js - npm install 在不同机器之间的 package-lock.json 中产生了奇怪的差异
- python - VisPy中图像像素坐标系中的文本标签
- jenkins - 无法更新詹金斯“java.lang.IllegalArgumentException:文件参数'文件不可写:'/var/lib/jenkins/plugins/junit.jpi'”
- python - 如何以 Pythonian 方式确定最佳数学模型?
- apache-iotdb - 当计划无法放入 IoTDB 中的 wal 缓冲区时如何设置 wal_buffer_size
- linux - 在 ssh 连接期间是否可以从服务器端执行客户端命令?
- rust - 是否应该使依赖于特定值的函数变得不安全?
- javascript - 如何在链式地图和过滤器之间“传递”额外数据
- sockets - TURN和STUN服务器相同的端口?
- c++ - 如何序列化派生成员类(谷物)