Enemy arrows colliding with enemy.

So I’m working on a script to make an enemy fire arrows from a certain distance. But the arrows are shot from inside the enemy, and I can’t figure out how to fix it. Could you please help me?

var Player : Transform;
var MoveSpeed = 4;
var MaxDist = 10;
var MinDist = 5;
var ball : Rigidbody;
var ballpower : float = 1500;
var ballSpeed : float = 5; 
function Start () 
function Update () 
    if(Vector3.Distance(transform.position,Player.position) >= MinDist){
         transform.position += transform.forward*MoveSpeed*Time.deltaTime;
         if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
                var instance: Rigidbody = Instantiate(ball, transform.position, transform.rotation);
				var fwd: Vector3 = transform.TransformDirection(Vector3.forward);
				instance.AddForce(fwd * ballpower);

Hi, you are instantiating from transform.position, which is mesh “inside”.
Create an empty gameobject, child it, and position it where you want the arrows to be shot from. And when instantiating, just use that gameobject transform.position.

public var shootPosition:Transform; //drag the position in inspector

//and when shooting
Instantiate(ball, shootPosition.position, transform.rotation);

line 17 :

var instance: Rigidbody = Instantiate(ball, transform.position + (transform.forward * 1.5), transform.rotation);

make 1.5 whatever value instantiates the arrow outside of the player collider.

Alternatively, you can use IgnoreCollision

var instance: Rigidbody = Instantiate(ball, transform.position, transform.rotation);
Physics.IgnoreCollision(instance.collider, collider);