Um… well you’re asking for a lot of work. The easy answer is that you take out the Destroy() and Instantiate(Explosion) functions and replace them with your own functions to immobilize and start a smoke effect.
E.g.
function OnCollisionEnter(collision : Collision){
if (collision.gameObject.tag == "Finish") {
Immobilize(collision.gameObject);
Instantiate(Smoke, transform.position, transform.rotation);
}
}
function Immobilize( aGameObject : GameObject) {
//Immobilization code goes here
}
(And you’d need a prefab called Smoke.)
I can’t answer what should be in the immobilize function because I don’t know how you do movement or input in your game.
For how to create a Smoke prefab, you should do a search for smoke particle effects in unity. It’s likely someone has a good starting point.