コード例 #1
0
 public override void OnEvent(TakeDamageEvent evnt)
 {
     if (evnt.Entity.IsOwner)
     {
         if (evnt.Entity.Source == null)
         {
             BoltEntity   entity       = evnt.Entity;
             PlayerHealth playerHealth = entity.GetComponent <PlayerHealth>();
             playerHealth.TakeDamage(evnt.Damage);
         }
     }
     else
     {
         if (evnt.Entity.Source == null)
         {
             BoltConsole.Write("empty soiurce");
         }
         else
         {
             var newEvnt = TakeDamageEvent.Create(evnt.Entity.Source);
             newEvnt.Damage = evnt.Damage;
             newEvnt.Entity = evnt.Entity;
             newEvnt.Send();
         }
     }
 }
コード例 #2
0
    void OnCollisionEnter(Collision collision)
    {
        if (entity.IsAttached)
        {
            speed = 0;
            Destroy(gameObject);


            if (isProjectileShooter)
            {
                var targetEntity = collision.gameObject.GetComponent <BoltEntity>();
                if (targetEntity != null && targetEntity.IsAttached)
                {
                    var evnt = TakeDamageEvent.Create(targetEntity.Source);
                    evnt.Damage = damage;
                    evnt.Entity = targetEntity;
                    evnt.Send();
                }
                if (projectileHitPrefab != null)
                {
                    ContactPoint contact = collision.contacts[0];
                    Quaternion   rot     = Quaternion.FromToRotation(Vector3.up, contact.normal);
                    var          hitfx   = BoltNetwork.Instantiate(projectileHitPrefab, contact.point, rot);
                }
            }
        }
    }
コード例 #3
0
ファイル: Guardian.cs プロジェクト: SofianeB98/Guardians
    public void TakeDamage(float getDamage)
    {
        //if (!this.IsDie && !this.IsInvinsible)
        {
            var flash = TakeDamageEvent.Create(entity);
            flash.GetDamage = getDamage;
            flash.Respawn   = false;
            flash.Send();
        }

        return;
    }
コード例 #4
0
    public void Shoot()
    {
        Vector3    aimPoint;
        RaycastHit rayHit;

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out rayHit, gunRange))
        {
            aimPoint = rayHit.point;
            var targetEntity = rayHit.collider.gameObject.GetComponent <BoltEntity>();
            if (entity.IsOwner)
            {
                BoltConsole.Write("HIT DETECTED  on OBJECT : " + rayHit.collider.gameObject.name);
                if (targetEntity != null)
                {
                    if (entity.IsAttached)
                    {
                        BoltConsole.Write("CALLING EVENT");
                        var evnt = TakeDamageEvent.Create(targetEntity.Source);
                        evnt.Damage = gunDamage;
                        evnt.Send();
                    }
                }
                if (projectileHitPrefab != null)
                {
                    Quaternion rot   = Quaternion.FromToRotation(Vector3.up, aimPoint);
                    var        hitfx = Instantiate(projectileHitPrefab, aimPoint, rot);
                }
            }
        }
        else
        {
            aimPoint = cam.transform.position + cam.transform.forward * gunRange;
        }
        if (entity.IsOwner)
        {
            muzzleIndex = state.WeaponActiveIndex;
            var muz = firePoints[muzzleIndex];

            var bullet = BoltNetwork.Instantiate(BoltPrefabs.Projectile, muz.transform.position, Quaternion.identity);

            bullet.transform.LookAt(aimPoint);

            if (muzzlePrefab != null)
            {
                var muzzleVfx = BoltNetwork.Instantiate(muzzlePrefab, muz.transform.position, Quaternion.identity);
                muzzleVfx.transform.forward = bullet.transform.forward;
            }
        }
    }
コード例 #5
0
ファイル: Guardian.cs プロジェクト: SofianeB98/Guardians
    IEnumerator Death()
    {
        yield return(new WaitForEndOfFrame());

        while (Time.time < this.currentDietime)
        {
            yield return(new WaitForEndOfFrame());

            if (entity.IsOwner)
            {
                state.MyColor = Color.Lerp(state.MyColor, Color.black, Time.deltaTime * this.dietime);
            }
        }


        var flash = TakeDamageEvent.Create(entity);

        flash.GetDamage = 0;
        flash.Respawn   = true;
        flash.Send();
        yield break;
    }
コード例 #6
0
    public void Shoot()
    {
        var    currentWeapon = WeaponObjects[state.WeaponActiveIndex];
        Weapon weapon        = currentWeapon.GetComponent <Weapon>();

        float gunRange            = weapon.GetRange();
        float gunDamage           = weapon.GetDamage();
        float projectileSpeed     = weapon.GetProjectileSpeed();
        bool  isProjectileShooter = weapon.GetIsProjectileShooter();

        GameObject projectilePrefab   = weapon.projectilPrefab;
        GameObject projectilHitPrefab = weapon.projectileHitPrefab;
        GameObject firePoint          = weapon.firePoint;

        Vector3    aimPoint;
        RaycastHit rayHit;

        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out rayHit, gunRange))
        {
            aimPoint = rayHit.point;
            var targetEntity = rayHit.collider.gameObject.GetComponent <BoltEntity>();
            if (entity.IsOwner)
            {
                if (!isProjectileShooter)
                {
                    if (targetEntity != null)
                    {
                        if (entity.IsAttached)
                        {
                            var evnt = TakeDamageEvent.Create(targetEntity.Source);
                            evnt.Damage = gunDamage;
                            evnt.Entity = targetEntity;
                            evnt.Send();
                        }
                    }
                    if (projectilHitPrefab != null)
                    {
                        Quaternion rot   = Quaternion.FromToRotation(Vector3.up, aimPoint);
                        var        hitfx = BoltNetwork.Instantiate(projectilHitPrefab, aimPoint, Quaternion.identity);
                    }
                }
            }
        }
        else
        {
            aimPoint = cam.transform.position + cam.transform.forward * gunRange;
        }
        if (entity.IsOwner)
        {
            var bullet = BoltNetwork.Instantiate(projectilePrefab, firePoint.transform.position, Quaternion.identity);

            var projectileScript = bullet.GetComponent <Projectile>();
            projectileScript.SetSpeed(projectileSpeed);
            projectileScript.SetIsProjectileShooter(isProjectileShooter);
            projectileScript.SetProjectileDamage(gunDamage);
            projectileScript.SetProjectileHitPrefab(projectilHitPrefab);

            bullet.transform.LookAt(aimPoint);

            if (muzzlePrefab != null)
            {
                var muzzleVfx = BoltNetwork.Instantiate(muzzlePrefab, firePoint.transform.position, Quaternion.identity);
                muzzleVfx.transform.forward = bullet.transform.forward;
            }
        }
    }