将对象推到轴上

时间:2018-01-25 11:49:44

标签: c# unity3d

我有一个我无法解决的问题。我有一个物体,当我点击他附近的某个地方时,我想要用一些力量移动。如下图所示。

enter image description here

我甚至想要一些想法! 帮助!

    public float speed;
public GameObject player;
Vector3 target;
private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        var mouseClick = Input.mousePosition;
        mouseClick.z = player.transform.position.z - Camera.main.transform.position.z;
        target = Camera.main.ScreenToWorldPoint(mouseClick);

        var distanceToTarget = Vector3.Distance(player.transform.position, target);

        if (distanceToTarget > 2)
        {
            target.z = 0;
            player.GetComponent<Rigidbody2D>().AddForce(target * speed);
        }
        else
            print("travelling COMPLETE");
    }
}

1 个答案:

答案 0 :(得分:0)

使用您在答案中提供的代码......

public float speed;
public GameObject player;
Vector3 directionVector;

private void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        // Input.mousePosition is already in pixel coordinates so the z should already be 0.
        Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        // Now that the mouse is a world position lets set his z to the same as the player
        mouseWorldPosition.z = player.transform.position.z;
        // Gives us a direction from the mouse to the player.  So think of it as Player <- Mouse remove the < and you have the equation
        directionVector = player.transform.position - mouseWorldPosition;
    }
    else
    {
        directionVector = Vector3.zero;
    }
}

// Physics based movement should be done in FixedUpdate
private void FixedUpdate()
{
        player.GetComponent<Rigidbody2D>().AddForce(directionVector.normalized * speed);
}