I made a simple shooting script which will spawn a bullet prefab in the position and rotation of a bullet emitter which is infront of my gun object and is a child of my gun object.
The issue I am having which I have never some across before when creating similar scripts is that at the beginning it works fine then the bullets begin spawning in weird spots.
I attached a screen shot along with my shooting script and my projectile movement script.
In the screen shot the highlighted object in the scene view is the bullet emitter and the white spheres are the bullets I shot traveling along their trajectory.
This seems very simple straight forward but I don't know whats causing it at first I thought it was scripts dealing with recoil and weapon sway so I turned them off and it didn't fix the problem.
Any advice or help would be appreciated Thank you.
**This is my shooting script.**
public class Gun : MonoBehaviour {
public Recoil recoiler;
public float fireRate = 0.5F;
public GameObject bullet;
public Transform bulletEmitter;
private float nextFire = 0.0F;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(Input.GetMouseButtonDown(0)&& Time.time > nextFire){
//every time you fire a bullet, add to the recoil.. of course you can probably set a max recoil etc..
recoiler.recoil+= 0.1f;
nextFire = Time.time + fireRate;
Instantiate(bullet,bulletEmitter.position,bulletEmitter.rotation);
}
recoiler.recoiling();
}
}
**This is my projectile movement script**!
#pragma strict
var speed = 20.0;
var time=0.0;
var TravelTime=1.5;
var impact : Transform;
var Destroyer : Transform;
function Start () {
}
function FixedUpdate () {
time+=Time.deltaTime;//addes to the time variable based on time passed in each frame
transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.Self);
//space.self means with respect to its own spacial coordinates.
if(time > TravelTime) {
Destroy(gameObject);
Instantiate(Destroyer, transform.position, transform.rotation);
}
}
function OnCollisionEnter(projectileCollision : Collision){
// Rotate the object so that the y-axis faces along the normal of the surface
var contact : ContactPoint = projectileCollision.contacts[0];
var rot : Quaternion = Quaternion.FromToRotation(Vector3.up, contact.normal);
var pos : Vector3 = contact.point;
Instantiate(impact, pos, rot);
// Destroy the projectile
Destroy (gameObject);
}
![alt text][1]
[1]: /storage/temp/47157-capture.png
↧