Exemplo n.º 1
0
    private void FireWeaponAtTarget()
    {
        timeSinceLastShot -= Time.deltaTime;
        if (!target)
        {
            return;
        }
        Vector3 dir  = target.transform.position - transform.position;
        float   diff = dir.magnitude;

        //Debug.Log("distance: " + diff + ". AtkRng: " + attackRange);
        if (diff <= attackRange && timeSinceLastShot <= 0)
        {
            sh.SpikeLoudnessDueToAttack();
            AudioSource.PlayClipAtPoint(selectedFiringSound, transform.position);
            selectedFiringSound = SelectSoundFromArray(firingSounds);
            float      zAng   = Vector3.SignedAngle(Vector2.up, dir, Vector3.forward);
            Quaternion rot    = Quaternion.Euler(0, 0, zAng);
            GameObject bullet = Instantiate(weaponPrefab, transform.position + (dir * bulletOffset), rot) as GameObject;
            bullet.GetComponent <Rigidbody2D>().velocity = weaponSpeed * bullet.transform.up;
            DamageDealer dd = bullet.GetComponent <DamageDealer>();
            dd.SetDamage(weaponDamage);
            dd.SetAttackSource(gameObject);
            Destroy(bullet, weaponLifetime);
            timeSinceLastShot = timeBetweenShots;
        }
    }
Exemplo n.º 2
0
    protected override void ExecuteAttackOnServer()
    {
        // Server-side validation of shot. Sufficient time between shots? Enough energy? Perhaps take in client's believed position and allow it
        // to be the source of the shot as long as its within a certain range of server-true position.
        if (timeSinceLastAttack < 0)
        {
            Debug.Log("execute attack on server");
            GameObject bullet = Instantiate(projectilePrefab, weaponSource.position + (weaponSource.up * offset), weaponSource.rotation) as GameObject;
            bullet.GetComponent <Rigidbody2D>().velocity = bullet.transform.up * weaponSpeed;
            DamageDealer dd = bullet.GetComponent <DamageDealer>();
            dd.Simulated = false;
            dd.SetDamage(weaponDamage);
            Destroy(bullet, weaponLifetime);
            timeSinceLastAttack = timeBetweenAttacks;

            sh.SpikeLoudnessDueToAttack();


            RpcDisplaySimAttackOnClients();
        }
    }