C#中的比率(在Unity中)

时间:2014-02-28 07:10:57

标签: c# unity3d physics angle

我正在尝试应用比率来移动物理库中的对象。

通过测量鼠标滑动的速度,以及第一次点击和放手时的位置,我编写了一种滑动功能。

我想根据你挥动的角度在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(起始位置和结束位置之间的差值)乘以速度,但是更长的滑动可以提供更大的力量。短而快速的滑动应该和长滑动一样好。也许我可以乘法/舍入找到某种解决方案,其中小型和大型滑动都会给出正确的力量?

1 个答案:

答案 0 :(得分:0)

您只需轻扫鼠标并将其标准化即可。然后你可以将它乘以你选择的恒定速度。