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); }
private float GetVehicleFactor(RaycastHit hit, VehicleEntity target, out VehiclePartIndex partIndex) { Collider collider = hit.collider; var hitBoxFactor = VehicleEntityUtility.GetHitFactor(target, collider, out partIndex); return(hitBoxFactor); }