我正在制作一個關于扔球的游戲。滑鼠游標是玩家應該投擲它的點。
向右投擲看起來沒問題(不要介意我加在球上的力,它設定得很低,所以我不會為了 gif 目的而追逐它):
但是當我指向左邊時,它仍然會產生球并且力會被添加到右邊:
我想知道,如何編輯我的代碼,所以扔球的方向與游標位置相關。
我在 Player GameObject 上的 OnFire 方法如下所示:
void OnFire(InputValue value)
{
if(!playerHasABall) {return;}
Instantiate(ball, ballSpawn.position, transform.rotation);
playerHasABall = false;
}
給球一個力的腳本看起來像這樣(它被放在球 GameObject 上):
{
[SerializeField] float ballForce = 20f;
void Start()
{
Throw();
}
public void Throw()
{
GetComponent<Rigidbody2D>().AddForce(new Vector2(ballForce * Time.deltaTime, 0f), ForceMode2D.Impulse);
}
}
我將不勝感激任何朝著好的方向輕推(沒有雙關語)
uj5u.com熱心網友回復:
在上面的代碼中你沒有點滑鼠,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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485839.html