unity 2D中的向着鼠标点击方向进行射击

在做一个地牢游戏时,我的玩家原型是一个魔法师一样的角色,他的攻击方向是由鼠标点击方向决定的。然而在这个问题上,我犯了很多错误,自己也很焦躁,到最后,才发现,其实只需要知道鼠标在屏幕上的点击位置(用Input.mouseposition来获取),再知道屏幕的宽高即可。大致如下:

  void FixedUpdate()
    {
        //计时器,子弹发射有间隙
        NextFire += Time.fixedDeltaTime;
        //如果按下了鼠标左键且计时器大于发射间隙
        if (Input.GetMouseButton(0) && NextFire > FireRate)
        {
            //记录鼠标位置
            Vector3 direction = Input.mousePosition;

            //计时器归零
            NextFire = 0;

            //生成子弹
            GameObject b = Instantiate(Bullet, Spwan.transform.position, Quaternion.identity) as GameObject;

            //子弹速度由鼠标点击的位置减去屏幕的宽高的1/2得到
            //主要就是坐标的转换
            b.GetComponent().velocity = (new Vector3(direction.x - Camera.main.pixelWidth / 2,direction.y - Camera.main.pixelHeight / 2, 0).normalized * BulletSpeed);    
      //将所有子弹放在一个父物体下,方便操作
     b.transform.SetParent(GameObject.Find("Bullets").transform);
        }

你可能感兴趣的:(unity)