示例#1
0
    void Shoot()
    {
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 1000, shootLayer))
        {
            //Stop movement
            navMesh.ResetPath();

            //Trigger anims
            anim.SetTrigger("shoots");
            anim.SetBool("isMoving", false);
            frameSincePath = 0;

            //Turn to target
            transform.LookAt(new Vector3(hit.point.x, transform.position.y, hit.point.z));

            //Instantiate bullet
            bulletInst = GameObject.Instantiate(bulletPrefab, bulletSpawner.position, bulletSpawner.rotation) as GameObject;

            if (hit.collider.tag == "Furniture")
            {
                shootTarget = (hit.transform.position - transform.position);
                shootTarget = new Vector3(shootTarget.x, 0f, shootTarget.z).normalized;
            }

            else
            {
                //Get target
                shootTarget = (hit.point - transform.position);
                shootTarget = new Vector3(shootTarget.x, 0f, shootTarget.z).normalized;
            }

            //Add force in direction of target
            bulletInst.GetComponent <Rigidbody> ().AddForce(shootTarget * bulletSpeed, ForceMode.Impulse);

            //assign humancontroller to bullet
            bulletInst.GetComponent <BulletBehaviour> ().human = GetComponent <HumanController> ();

            //Sound
            source.PlayOneShot(shoot, 0.8f);

            //Reload
            ammo--;

            StartCoroutine(Reload());
            StartCoroutine(hud.UpdateArrows());
        }
    }