示例#1
0
        /// <summary>
        /// This is called via interface when a laser hits an object
        /// </summary>
        /// <param name="damageData"></param>
        public void OnHitDetect(OnHitDetectData data)
        {
            if (data.DamageData.AttackType != AttackType.Laser)
            {
                return;
            }

            SetEnergy(5);
        }
        private void ShootAtDirection(Vector2 rotationToShoot, OnHitDetectData data)
        {
            var range = -1f;

            if (data.BulletObject.TryGetComponent <ProjectileRangeLimited>(out var rangeLimited))
            {
                range = rangeLimited.CurrentDistance;
            }

            CastProjectileMessage.SendToAll(gameObject, data.BulletObject.GetComponent <Bullet>().PrefabName, rotationToShoot, default, range);
        public void OnHitDetect(OnHitDetectData data)
        {
            //Only reflect lasers
            if (data.BulletObject.TryGetComponent <Bullet>(out var bullet) == false || bullet.MaskData != laserData)
            {
                return;
            }

            ShootAtDirection(GetNewDirection(data), data);
        }
示例#4
0
 private void TryAngleDouble(OnHitDetectData data)
 {
     if (Vector2.Angle(data.BulletShootDirection, VectorExtensions.DegreeToVector2(rotation - 90)) <= 55)
     {
         ShootAtDirection(rotation + 90, data);
     }
     else if (Vector2.Angle(data.BulletShootDirection, VectorExtensions.DegreeToVector2(rotation + 180 - 90)) <= 55)
     {
         ShootAtDirection(rotation + 180 + 90, data);
     }
 }
    public void OnHitDetect(OnHitDetectData data)
    {
        if (data.DamageData.AttackType != AttackType.Rad)
        {
            return;
        }

        damageTaken += data.DamageData.Damage;

        if (damageTaken >= radDamageNeedToSpawn)
        {
            SpawnPrefab();
        }
    }