我正在制作自己看到的游戲的副本,但是當我試圖讓火箭面對他們前進的方向時,它就無法始終如一地作業。
public class FriendlyRocket : MonoBehaviour
{
public Rigidbody2D self;
private Vector2 mousePos;
public Transform mouse;
//public float timer;
// Start is called before the first frame update
void Start()
{
mouse = GameObject.Find("Mouse").transform;
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//mousePos.z = 10;
//mousePos = Input.mousePosition;
transform.LookAt(mouse.transform);
//transform.eulerAngles.z = 0;
if (mousePos.x < 0) { transform.eulerAngles = new Vector3(0f, 0f, transform.eulerAngles.x 90); }
if (mousePos.x > 0) { transform.eulerAngles = new Vector3(0f, 0f, transform.eulerAngles.x 270); }
//self = GetComponent<Rigidbody2D>();
//self.velocity = new Vector2(self.velocity.x, 10f);
}
// Update is called once per frame
void Update()
{
transform.position = Vector2.MoveTowards(transform.position, mousePos, 10f * Time.deltaTime);
/*if (timer < 0)
{
timer -= Time.deltaTime;
}
if(timer>0)
{
Destroy(gameObject);
}*/
}
}
有什么想法嗎?
uj5u.com熱心網友回復:
沒有視覺表示很難回答這個問題。但我認為這個問題與您僅在開始時設定 mousePos 但每幀沿 mousePos 方向移動的事實有關。因此,如果 mousePos 無法更改,則可以,但 mousePos 在此期間正在更改,那么您還應該更新 mousePos 的值。當然,如果方向改變,也應該在每一幀呼叫 LookAt() 來更新旋轉。我希望這些想法會對你有所幫助。
uj5u.com熱心網友回復:
我沒有完全理解這個問題,但你必須在 void update() 中更新你的 mousePos 以便物件跟隨滑鼠
void Update()
{
transform.position = Vector2.MoveTowards(transform.position, mousePos,
10f * Time.deltaTime);
mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
uj5u.com熱心網友回復:
你可以試試
transform.LookAt(target);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512418.html
