- Home /
 
Damage Player when this object collides the CharacterController?
Well lets say this script is attached to a box, that box is a child of my Enemy and has a box collider and a kinematic rigidbody because if not it mess up. Im trying to do that when this object collides with player charactercontroller the Player gets damaged. Here is what i tryed. Raycasting works but is not what im looking for, I also tryed OnCollisionEnter butdidnt worked.And i dont know if im using OnControllerColliderHit correctly. So can you give me any solution? Please!!
 var attack = 30;
 var canattack = 1;
 var cooldown : double = 2.2;
 var distance : double = 0.5;
 
 //function Update() {
 //    if(Enemy.GetComponent(EnemyAI).attackEnabled == 0) {
 //    var fwd = transform.TransformDirection (Vector3.forward);
 //    var hit : RaycastHit;
 //    if(canattack == 1) {
 //        if (Physics.Raycast (transform.position, fwd, hit, distance)) {
 //            if (hit.collider.gameObject.tag == "Player") {
 //                hit.collider.gameObject.GetComponent(PlayerHealth).damage += attack;
 //                print ("Ouch!That Hurts");
 //                canattack = 0;
 //                Attack();
 //            }
 //        }
 //    }
 //}
 //function Attack() {
 //    while(true) {
 //        if(canattack == 0) {    
 //            yield WaitForSeconds(cooldown);
 //            canattack = 1;
 //        }
 //        else {
 //            yield;
 //        }
 //    }
 //}
 
 //function OnCollisionEnter(collision : Collision) {
 //    print ("Collide!");
 //    if (collision.gameObject.tag == "Player") {
 //        collision.gameObject.GetComponent(PlayerHealth).damage += attack;     
 //    print ("Ouch!");
 //    }
 //}
 
 //function OnControllerColliderHit (hit : ControllerColliderHit) {
 //    if (hit.collider.tag == "Player") {
 //        hit.collider.GetComponent(PlayerHealth).damage += attack;
 //        print ("Ouch!");
 //     }
 //}
 
              try doing this way
script on box
 OnTriggerEnter(Collider Other){
     Player PlayerScript = Other.gameObject.getComponent("Player") as Player;
     PlayerScript.Health --;
 }
 
                  box has to have collider is trigger true
something like this sorry if here are typos but I've written it without unity's help
and OFC I write in C#
 function OnTriggerEnter(Collider Other){
     var PlayerScript = Other.gameObject.getComponent("Player");
     PlayerScript.Health --;
 }
 
                  that is his in js
Guys trigger enter is for trigger colliders $$anonymous$$y answer below is for actual collisions
Answer by KMKxJOEY1 · Apr 02, 2013 at 09:50 PM
 function OnCollisionEnter(collision : Collision) {
   print ("Collide!");
   if (collision.gameObject.tag == "Player") {
 //   collision.gameObject.GetComponent(PlayerHealth).damage += attack; 
  collision.gameObject.GetComponent(PlayerHealth).health -= attack;
   print ("Ouch!");
   }
 }
 
               it looks like you were adding to the damage of the player health script
i added a line where it will subtract from the health instead
Sorry but my script is ok cause:
 curHealth = maxHealth - damage;
                 Thats what I tried already but doesnt works withcharacter controllers.
it is printing collide right? and the tag on the player is a capitol P and correct spelling and such. maybe print the colliders name so you can check what it is hitting like this:
 print("Collide! with " + collision.gameObject.name);
 
                 I added that but it seems it doesnt collides with my character.
If i change the box to non-kinematic it works ok but after firsthit it goes flying away
Answer by Jeremias · Apr 03, 2013 at 03:47 PM
There is no solution for this?
be patient, dont post a new 'answer'. if you want to bump, post a comment, but that is after no activity for several days. remember, we all have lives too
Yes I $$anonymous$$now,Im Looking other questions too but none answer my questions.
Your answer