[英]Unity - Trying to move cube to mouse position - cube moves in wrong direction
[英]Trying to launch in the mouse position in Unity
我试图让玩家角色根据发射范围向鼠标方向发射。
问题是我不知道 go 如何做到这一点。 无论如何我都尝试过,这是我想出的代码。
public class playershoot : MonoBehaviour
{
public float shootRange = 5f;
Vector2 shootDir;
Vector2 lookDir;
public Rigidbody2D rb;
public Camera cam;
Vector2 mousePos;
void FixedUpdate()
{
System.Diagnostics.Debug.WriteLine("huzza!");
mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButtonDown(0))
System.Diagnostics.Debug.WriteLine("huzza!");
lookDir = mousePos - rb.position;
rb.MovePosition(rb.position + lookDir * shootRange);
}
}
我知道它看起来真的很糟糕,一旦我开始工作,我会经常清理它。 不幸的是,我从来没有达到那个地步。 有小费吗?
关于您的问题,我们没有太多背景信息,但是if
声明中有一件事引起了您的注意。
void FixedUpdate()
{
System.Diagnostics.Debug.WriteLine("huzza!");
mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButtonDown(0))
System.Diagnostics.Debug.WriteLine("huzza!");
lookDir = mousePos - rb.position;
rb.MovePosition(rb.position + lookDir * shootRange);
}
在 c# 中,如果要在一个 if 语句中执行多个语句,则需要用大括号 {} 将 scope 括起来。 否则,只有 if 之后的第一条语句才会被 if 考虑。
使用此代码,只有System.Diagnostics.Debug.WriteLine("huzza;");
当Input.GetMouseButtonDown(0)
为真时将有条件地执行。 以下两行在 if 之外执行。 这意味着,无论是否捕获输入, rb.MovePosition
都会通过更新在每一帧上发生。
你可能是这个意思:
if (Input.GetMouseButtonDown(0))
{
System.Diagnostics.Debug.WriteLine("huzza!");
lookDir = mousePos - rb.position;
rb.MovePosition(rb.position + lookDir * shootRange);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.