You can just use an IntValue parented inside the car and listen for health changes by doing:
--script placed inside the car
local Car = script.Parent
--health is an IntValue named "Health"
local Health = Car:WaitForChild("Health")
Health.Changed:Connect(function(amount)
print("the car has "..amount.." health")
if amount <= 0 then
--explode
end
end)
I consider it possible, although I haven’t personally tried that, it may be a good solution cause you will be able to use Humanoid.Died and Humanoid:TakeDamage() although some of the other properties are useless for this.