投掷物体时,它只会向右

When throwing an object, it only goes right

我正在制作一个关于投球的游戏。鼠标光标是点,玩家应该把它扔到哪里。

右边的投掷看起来还可以(不要介意我给球加的力,它设置为低所以我不会为了gif目的而追逐它):

但是当我指向左边时,它仍然会产生球并且力会增加到右边:

我想知道,如何编辑我的代码,使抛出的球的方向与光标位置相关。

我在 Player GameObject 上的 OnFire 方法如下所示:

    void OnFire(InputValue value)
{
    if(!playerHasABall) {return;}
    Instantiate(ball, ballSpawn.position, transform.rotation);
    playerHasABall = false;
}

给球施加力的脚本如下所示(它放在球游戏对象上):

{
    [SerializeField] float ballForce = 20f;


    void Start() 
    {
        Throw();    
    }

    public void Throw()
    {
        GetComponent<Rigidbody2D>().AddForce(new Vector2(ballForce * Time.deltaTime, 0f), ForceMode2D.Impulse);
    } 
 }

我将不胜感激任何朝着好的方向推动(无双关语)

在上面的代码中你没有指向鼠标,new Vector2 axis (ballForce * Time.deltaTime, 0f) 总是给你正确的方向,Time.deltaTime 因素大大降低了投掷能力。为了解决这个问题,减少功率量并用以下代码解决方向问题。

[SerializeField] float ballForce = 5f;
public void Throw()
{
    var mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    var direction = (mousePosition - transform.position);
    direction.z = transform.position.z;
    transform.right = direction.normalized;

    GetComponent<Rigidbody2D>().AddForce(transform.right*ballForce, ForceMode2D.Impulse);
}