- Home /
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 ()
{
transform.LookAt(Player);
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);
}
}
}
Answer by YoungDeveloper · May 06, 2014 at 01:58 PM
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);
Answer by AlucardJay · May 06, 2014 at 02:00 PM
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);
Your answer
Follow this Question
Related Questions
Can someone help me fix my Javascript for Flickering Light? 6 Answers
Setting Scroll View Width GUILayout 1 Answer
Enemy AI With changing Player 0 Answers
ai navigation help 0 Answers
AI Waypoint help or suggestions!? 2 Answers