微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 向Unity中的鼠标位置射击一个射弹

我正在创建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论坛,但解决方案或者给了我错误,或者他们给了我不同的问题,比如只在一个轴上拍摄或在相反的轴上拍摄

解决方法:

根据你的评论,每帧调用一次Update(),并且在每个帧中你获得当时鼠标的位置,所以它总是倾向于新的鼠标位置.

因此,您需要做的是在触发操作时获取鼠标位置,并使用该位置直到操作完成/取消.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐