【问题标题】:Shooting a projectile towards mouse location in Unity在 Unity 中向鼠标位置发射弹丸
【发布时间】:2017-12-01 09:03:31
【问题描述】:

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

【问题讨论】:

    标签: c# unity3d unity3d-2dtools


    【解决方案1】:

    根据您的评论,Update() 每帧调用一次,并且在每一帧内您都将获得当时鼠标的位置,因此它总是倾向于新的鼠标位置。

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

    【讨论】:

    • 昨晚我完全错过了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多