我正在尝试应用比率来移动物理库中的对象。
通过测量鼠标滑动的速度,以及第一次点击和放手时的位置,我编写了一种滑动功能。
我想根据你挥动的角度在2d空间施加力。我已经尝试使用Mathf.Atan2以及Vector2.angle方法来查找您刷过的角度但无济于事。
我想也许我可以看一下x和y的运动,然后从那里沿x轴和y轴施加适当的力分布?
例如:你移动的x是y的一半。因此,我们将分割速度变量1/3在x方向上移动,2/3力在y方向上移动。
是否有更简单的方法将这种“滑动”样式输入应用于运动?
using UnityEngine;
using System.Collections;
public class MouseInteraction : MonoBehaviour {
public int SpeedMultiplier = 2;
public Vector2 startPos;
public Vector2 endPos;
public float startTime;
public float endTime;
public float mouseDistance;
public float mouseTime;
public float mouseSpeed;
public float mouseAngle;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (Input.GetMouseButtonDown (0))
{
Vector2 startPos = Camera.main.ScreenToViewportPoint (Input.mousePosition);
float startTime = Time.time;
Debug.Log ("The start position is " + startPos);
Debug.Log ("The start time is " + startTime);
}
else if (Input.GetMouseButtonUp (0))
{
Vector2 endPos = Camera.main.ScreenToViewportPoint (Input.mousePosition);
float endTime = Time.time;
Debug.Log ("The end position is " + endPos);
Debug.Log ("The end time is " + endTime);
float mouseDistance = Vector2.Distance(startPos, endPos);
Debug.Log ("The mouse distance is " + mouseDistance);
float mouseTime = endTime - startTime;
Debug.Log ("The mouse time is " + mouseTime);
float mouseSpeed = mouseDistance/ mouseTime;
Debug.Log ("The mouse SPEED is " + mouseSpeed);
float mouseAngleX = endPos.x - startPos.x;
float mouseAngleY = endPos.y - startPos.y;
Debug.Log ("The mouseX number is " +mouseAngleX);
Debug.Log ("The mouseY number is " +mouseAngleY);
}
}
}
具体来说,我应该补充一点,我现在唯一坚持的就是应用正确的水平和垂直动量。我可以将每个mouseAngleX和mouseAngleY(起始位置和结束位置之间的差值)乘以速度,但是更长的滑动可以提供更大的力量。短而快速的滑动应该和长滑动一样好。也许我可以乘法/舍入找到某种解决方案,其中小型和大型滑动都会给出正确的力量?
答案 0 :(得分:0)
您只需轻扫鼠标并将其标准化即可。然后你可以将它乘以你选择的恒定速度。