在Unity中朝鼠标位置发射抛射物

6

我正在制作一个2D游戏,玩家需要点击来射击。鼠标光标在屏幕上的位置就是弹道移动的方向。我成功让弹道实例化并指向鼠标位置,但是弹道跟随鼠标移动,这不是我想要的。

public class LetterController : MonoBehaviour {

    private List<GameObject> letters = new List<GameObject>();
    public GameObject letterPrefab;
    public float letterVelocity;

    // Use this for initialization
    private void Start()
    {
    }

    // Update is called once per frame
    void Update ()
    {
         Vector3 direction = Camera.main.ScreenToWorldPoint(Input.mousePosition);

    if (Input.GetMouseButtonDown(0))
    {
        GameObject letter = (GameObject)Instantiate(letterPrefab, transform.position, Quaternion.identity);
        letters.Add(letter);
    }

    for (int i = 0; i < letters.Count; i++)
    {
        GameObject goLetter = letters[i];

        if (goLetter != null)
        {
            goLetter.transform.Translate(direction * Time.deltaTime * letterVelocity );

            Vector3 letterScreenPosition = Camera.main.WorldToScreenPoint(goLetter.transform.position);
            if (letterScreenPosition.y >= Screen.height + 10 || letterScreenPosition.y <= -10 || letterScreenPosition.x >= Screen.width + 10 || letterScreenPosition.x <= -10)
            {
                DestroyObject(goLetter);
                letters.Remove(goLetter);
                }
            }
        }
    }
}

我观看了几个YouTube视频,并查看了一些Unity论坛,但解决方案要么给了我错误,要么产生了不同的问题,比如只在一个轴上射击或在相反的轴上射击。

1个回答

5
根据您的评论,Update()每帧调用一次,在每一帧中获取鼠标位置,因此它始终趋向于新的鼠标位置。
所以您需要做的是在操作触发时获取鼠标位置,并在完成/取消操作之前使用该位置。

1
我昨晚完全错过了那个。谢谢! - AwesomeBob2341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接