Detect explosion Character Controller

I have a character controller and a missile that causes an explosion. I want the explosion to knock back/allow the player to rocket jump. How can I do this? The Character Controller does not respond to rigidbody physics such as a Detonator explosion or a high velocity rigidbody projectile. What is the best way to allow the functions of both on my Character Controller so that it is effected by explosions but still functions like a Character Controller?

Looks like you need to do away with the character controller peice all together and work with a rigid body + some sort of collider.

I was dealing with this issue too. I got it working with a box collider and rigid body only.

add a rigidbody but disable the rigidbody.

on collision with an explosion disable character controller and enable rigidbody. Add forces to rigidbody to simulate explosion, on landing disable rigidbody enable character controller.

note, this is how games do ragdoll physics on characters.

If you dont want physics do a rough simulation by using charactercontroller.move() to move the character in the direction opposite the explosion at the speed thats the max speed / distance. The direction opposite can be found by

explosion.position - character.position.

That willl give you a vector pointing from explosion in the direction of character.

Ok I think you have to ‘hack this’. What I would try is to:
`

  1. Add an empty Game object as child of my character
  2. Add a box collider and set it to trigger and add a rigidbody (disable this)
  3. Put a script in there which handles OnTriggerEnter
  4. In this method, that is on trigger, disable the character controller on the parent and enable the character controller.
    `

Please let me know if this helps.

well do you understand basic coding?

Like do you know what an array is?

    Sphere cast all returns an array
    
    //impact point you'll need to find, its the point at
    //which the round exploded
    vector3 ImpactPoint; 
    
    //DamageRadius is just chosen by you based on
    //what you think is appropriate explosion radius
    float DamageRadius;
    
    //this is an array, it will contain information
    //on every object that was in the explosion radius
    RayCastHit[] ArrayOfObjectsHit;
    
    
    //this is the line that finds all objects with
    //colliders inside the radius DamageRadius whose
    //center or origin is ImpactPoint
    //this Returns an array which we'll store.
    ArrayofObjectsHit = physics.spherecastall(ImpactPoint,DamageRadius)

//This will do alot of things so read carefully
//it will go through the array of objects, it will take the players
//position and the explosions position and use that to figure out which
//way to throw the player.
//it will then move the player some

vector3 TossDirection;

//speed is meters per second, thats how unity does speed for a character controller
//speed is how fast you will be thrown
float speed = 1;

foreach (RayCastHit ObjectHit in ArrayOfObjectsHit)
{
   if (ObjectHit.transform.GameObject.Tag == "Player")
    {
      TossDirection = ObjectHit.transform.position - ImpactPoint;
      //this next line varies, its the line that will move the player
      //but physics based movement is done differently than 
      //character controller movement which is done slightly
      //differently than transform movement or kinematic 
      //rigidbody transform movement
      //this assumes your using a character controller 
      //we will multiply the direction by the speed to get a Movement Vector
      ObjectHit.transform.GameObject.CharacterController.Move(TossDirection * Speed);
     }
}

That took awhile, mark as answered.
If you can’t turn that into the answer you need to learn more about programming.