tps(第三人称射击游戏) 4.角色射击

人物射击第一时间想到的方法是往前发射一条射线

LineRenderer line;
Ray r;
Ray bullet;
RaycastHit hit;

 line = this.gameObject.AddComponent<LineRenderer>();
        line.SetVertexCount(2);
        line.material = new Material(Shader.Find("Particles/Additive"));
        line.SetColors(Color.red, Color.red);
        line.SetWidth(0.05f, 0.05f);

初始化LineRenderer;

if(Input.GetMouseButtonDown(0))
        {
            Shooting();
        }

鼠标左键按下射击

void Shooting()
    {
        r.origin = mcamera.transform.position;
        r.direction = mcamera.transform.forward;//设定r射线

        if(Physics.Raycast(r, out hit, 1000f))
        {
            GameObject gameObj = hit.collider.gameObject;
            if (gameObj.tag == "zombie")
            {
                gameObj.transform.position += this.transform.forward * shootback_dis;
                gameObj.SendMessage("ApplyDamage",30);


            }

        }//通过tag判断是否为敌人 如果射中的是敌人,调用其伤害函数,并将其击退 


        bullet.origin = transform.position;
        bullet.direction = hit.point - transform.position;//子弹的弹道为人物到射中的物体

        line.enabled = true;   

        line.SetPosition(0, transform.position);
        line.SetPosition(1, hit.point);  //绘制射线

        sound.clip = weaponList[(int)weaponIndex.ak].sound_shoot;  //播放枪声
        this.sound.Play();


        Invoke("detroyline", 0.05f);//消除弹道
  }

通过第一个射线r得到屏幕中心射线触碰的点,再绘制射线从人物到射中点。

但只是一个取巧的方法,而且如果r没有碰到物体就无法绘制射线。

猜你喜欢

转载自blog.csdn.net/qq_38105943/article/details/78577962