Esempio n. 1
0
        public void OnHitVehicle(PlayerEntity srcPlayer, VehicleEntity targetVehicle, IBulletEntity bulletEntity, RaycastHit hit)
        {
            if (srcPlayer.gamePlay.IsDead())
            {
                return;
            }

            Collider         collider = hit.collider;
            VehiclePartIndex partIndex;
            var hitBoxFactor = VehicleEntityUtility.GetHitFactor(targetVehicle, collider, out partIndex);

            var totalDamage = GetBulletDamage(bulletEntity, hitBoxFactor, Vector3.Distance(hit.point, bulletEntity.GunEmitPosition));
            var gameData    = targetVehicle.GetGameData();

            gameData.DecreaseHp(partIndex, totalDamage, srcPlayer.entityKey.Value);
            srcPlayer.statisticsData.Statistics.TotalDamage += totalDamage;

            bulletEntity.IsValid = false;

            srcPlayer.statisticsData.Statistics.ShootingSuccCount++;
            _logger.DebugFormat("bullet from {0} hit vehicle {1}, part {2}",
                                bulletEntity.OwnerEntityKey, targetVehicle.entityKey.Value, collider.name);

            ClientEffectFactory.AddHitVehicleEffectEvent(srcPlayer, targetVehicle.entityKey.Value, hit.point,
                                                         hit.point - targetVehicle.position.Value, hit.normal);
        }
Esempio n. 2
0
        private float GetVehicleFactor(RaycastHit hit, VehicleEntity target, out VehiclePartIndex partIndex)
        {
            Collider collider     = hit.collider;
            var      hitBoxFactor = VehicleEntityUtility.GetHitFactor(target, collider, out partIndex);

            return(hitBoxFactor);
        }