Hi,
I am creating weapon - baseball bat.
My code on bat looks like this
function OnCollisionEnter(collision : Collision) {
if (collision.collider) {
collision.collider.SendMessage("ApplyDamage", damage,SendMessageOptions.DontRequireReceiver);
}
}
It works fine with all objects but it doesn’t works with my enemies.
Enemies have Character Controller and my weapons based on raycast works with Character Controller.
I don’t have really idea what is wrong.
I am trying another way
function Fire(){
var enemy : GameObject[] = GameObject.FindGameObjectsWithTag("mafians");
if(enemy != null){
var close = enemy[0];
for (i=0; i<=enemy.length; i++){
if(Vector3.Distance(enemy[i].transform.position, transform.position) < 1.0){
close = enemy[i];
}
}
close.BroadcastMessage("ApplyDamage", damage,SendMessageOptions.DontRequireReceiver);
}
}
But my array index is out of range and I don’t know why.
for (i=0; i<=enemy.length; i++){
should be
for (i=0; i<enemy.length; i++){
There is still a mistake because all enemies die. It looks like that “i” there close = enemy[i]; has whole range of the array.
No, the problem is you’re using BroadcastMessage instead of SendMessage.
Maybe later but I think your problem is the array changes size dynamically,
that code
for (i=0; i<enemy.length; i++){
should be
for (i=enemy.length; i>= 0; i–){