- Home /
Bullet Not Moving
Hi, I have been following Eteeski's tutorials series in which he explains how to make a visual bullet in Unity, and I managed to copy the script that he used for the bullet, but when I shoot the bullet spawns but it doesn't move, it just freezes in the scene, and I was hoping that someone else than me could check the script and see what is wrong, because I don't see anything on it that might cause the problem.
Bullet Script
var speed : float = 500;
var randomAngle : float = 0;
var lifeTime : float = 3;
var bulletGravity : float = 9.8;
var decalHitWall : GameObject;
var floatInFrontOfWall : float = 0.0001;
@HideInInspector
var moveDirection : Vector3;
@HideInInspector
var shortestSoFar : float;
@HideInInspector
var instanciatePoint : Vector3;
@HideInInspector
var instanciateRotation : Quaternion;
@HideInInspector
var foundHit : boolean = false;
@HideInInspector
var parentToAdd : Transform;
function Awake()
{
transform.Rotate((Random.value * 2 * randomAngle) - randomAngle, 0, Random.value * 360);
moveDirection = transform.forward * speed;
shortestSoFar = Mathf.Infinity;
foundHit = false;
}
function Update ()
{
transform.rotation = Quaternion.LookRotation(moveDirection);
var hits : RaycastHit[];
hits = Physics.RaycastAll(transform.position, transform.forward, speed * Time.deltaTime);
for (var hit in hits)
{
if(hit.transform.tag == "Level Parts")
{
if(Vector3.Distance(transform.position, hit.point) < shortestSoFar);
instanciatePoint = hit.point + (hit.normal * (floatInFrontOfWall + Random.Range(0, 0.01)));
instanciateRotation = Quaternion.LookRotation(hit.normal);
parentToAdd = hit.transform;
shortestSoFar = Vector3.Distance(transform.position, hit.point);
foundHit = true;
}
}
if(foundHit)
{
var spawnedBulletHole : GameObject = Instantiate(decalHitWall, instanciatePoint, instanciateRotation);
if (parentToAdd)
spawnedBulletHole.transform.parent = parentToAdd;
Destroy(gameObject);}
transform.position + moveDirection * Time.deltaTime;
moveDirection.y -= bulletGravity * Time.deltaTime;
lifeTime -= Time.deltaTime;
if (lifeTime < 0)
Destroy(gameObject);
}
Please help, I tried to contact him but he doesn't answers and I would like to know how to fix it.
Thanks for your time.
Answer by AlucardJay · Jan 06, 2013 at 05:27 AM
It looks like you have this line wrong :
transform.position + moveDirection * Time.deltaTime;
should be
transform.position += moveDirection * Time.deltaTime;
note the +=
Your answer
Follow this Question
Related Questions
Shoot the bottle 1 Answer
Bullet does not move forward 1 Answer
A node in a childnode? 1 Answer