Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (!canShoot)
        {
            return;
        }

        ellapsedTime += Time.deltaTime;

        if (Input.GetButtonDown("Fire1") && ellapsedTime > shotCooldown)
        {
            ellapsedTime = 0f;
            RaycastHit hit;

            //Ask server to shoot.
            /// CmdFireShot(firePosition.position, firePosition.forward);

            Ray ray = new Ray(firePosition.position, firePosition.forward);
            Debug.DrawRay(ray.origin, ray.direction * 3f, Color.red, 1f);
            bool result = Physics.Raycast(ray, out hit, 50f);

            if (result)
            {
                hit_pos = hit.transform.position;
                NewPlayerHealth enemy = hit.transform.GetComponent <NewPlayerHealth>();
                if (enemy != null)
                {
                    CmdFireShot(firePosition.position, firePosition.forward, hit_pos, hit.transform.gameObject.GetComponent <NetworkIdentity>().netId);
                    return;
                }
            }
            CmdFireMissedShot(firePosition.position, firePosition.forward);
        }
    }
Esempio n. 2
0
    [Command] //This is run on the server.
    void CmdFireShot(Vector3 origin, Vector3 direction, Vector3 hit_pos, NetworkInstanceId netid)
    {
        Debug.Log("Player Count is... " + playerList.players.Count);
        //Debug.Log("origin: "+ origin+", direction: "+ direction+ ", hit_pos: "+ hit_pos);
        //Debug.Log("Size of player list " + manager.GetComponent<PlayerList>().players.Count);
        ////Debug.Log("Size of player list " + PlayerList.singleton.GetComponent<PlayerList>().players.Count +", NETID: "+netid+", ");
        //GameObject closestObject = null;
        GameObject player = playerList.GetPlayer(netid);

        Debug.Log("Distance of " + Vector3.Distance(hit_pos, player.transform.position) + ".");
        if (Vector3.Distance(hit_pos, player.transform.position) < 3)
        {
            //health stuff
            NewPlayerHealth enemy = playerList.GetPlayer(netid).transform.GetComponent <NewPlayerHealth>();

            if (enemy != null)
            {
                bool wasKillShot = enemy.TakeDamage();

                if (wasKillShot)
                {
                    score++;
                }
            }
        }

        RaycastHit hit;

        Ray ray = new Ray(origin, direction);

        Debug.DrawRay(ray.origin, ray.direction * 3f, Color.red, 1f);

        ////50f How far the gun shoots.
        ////Save guns in ScriptableObjects.
        bool result = Physics.Raycast(ray, out hit, 50f);

        RpcProcessShotEffects(result, hit.point, hit.normal);
    }
Esempio n. 3
0
    void Explode()
    {
        hasExploded = true;
        Debug.Log("BOOM");

        //Show Effect
        Destroy(Instantiate(explosionEffect, transform.position, transform.rotation), 1f);

        // Get nearby Objects
        Collider[] collidersToDestroy = Physics.OverlapSphere(transform.position, blastRadius);
        foreach (Collider nearbyObject in collidersToDestroy)
        {
            // Add force
            NewPlayerHealth enemy = nearbyObject.GetComponent <NewPlayerHealth>();
            if (enemy != null)
            {
                bool wasKillShot = enemy.TakeDamage();

                //if (wasKillShot)
                //score++;
            }
        }
        // Add force
        Collider[] collidersToAddForce = Physics.OverlapSphere(transform.position, blastRadius);
        foreach (Collider nearbyObject in collidersToAddForce)
        {
            // Add force
            Rigidbody rb = nearbyObject.GetComponent <Rigidbody>();
            if (rb != null)
            {
                rb.AddExplosionForce(explosionForce, transform.position, blastRadius);
            }
        }
        // Damage

        // Remove Granade
        Destroy(gameObject);
    }