Instead of particles, i tryed it with Objects

Like the title said, i wanted to try something completly different as a challenge for myself, and i came up with this.

As you can see the bullets do not have the behaviour that i wanted instead of flying they just drop down.
Does this have to do with the fact that we are flying with the camera and this changes the physics?

Here is the code that i came up with, searching the web for help.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    //Drag in the Bullet Emitter from the Component Inspector.
    public GameObject Bullet_Emitter;

    //Drag in the Bullet Prefab from the Component Inspector.
    public GameObject BulletPrefab;

    //Enter the Speed of the Bullet from the Component Inspector.
    public float Bullet_Forward_Force;

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            //The Bullet instantiation happens here.
            GameObject Temporary_Bullet_Handler;
            Temporary_Bullet_Handler = Instantiate(BulletPrefab, Bullet_Emitter.transform.position, Bullet_Emitter.transform.rotation) as GameObject;

            //Sometimes bullets may appear rotated incorrectly due to the way its pivot was set from the original modeling package.
            //This is EASILY corrected here, you might have to rotate it from a different axis and or angle based on your particular mesh.
            Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 90);

            //Retrieve the Rigidbody component from the instantiated Bullet and control it.
            Rigidbody Temporary_RigidBody;
            Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();

            //Tell the bullet to be "pushed" forward by an amount set by Bullet_Forward_Force.
            Temporary_RigidBody.AddForce(transform.forward * Bullet_Forward_Force);

            //Basic Clean Up, set the Bullets to self destruct after 10 Seconds, I am being VERY generous here, normally 3 seconds is plenty.
            Destroy(Temporary_Bullet_Handler, 10.0f);
        }
    }
}

Hi Johnny,

Probably not. Depending on what components you assigned to your bullet prefab, it might be that the gravity is affecting the instantiated game object. Give the bullet an individual velocity. Don’t use AddForce.

Did this help?


See also:

Hmm, i was reading the link that you provided me, but i still can’f figure it out.
I attached the Bulletscript on to my playership

I tryed to use .velocity instead of addforce but for that i need to access the rigidbody.
How do i do that?:sweat_smile:

I tryed it with:

gameObject.GetComponent<Rigidbody>().velocity(0, 0, 100);

but i get an error

Assets\Script\Bullet.cs(15,43): error CS1955: Non-invocable member 'Rigidbody.velocity' cannot be used like a method.

Do you have a screenshot of the Inspector of the instantiated bullet?

You already access the/a Rigidbody. Otherwise, you could not call AddForce. Please read the example in the API. Look for the relevant lines.



I readed the example and i think i doing it like they said, now i get no errormessages but something strange happens when i click play. In the inspector tag on the scripts it changes from bullet to ship

That probably will not work. Assign the prefab to the component that is supposed to instantiate the bullets.

Once the bullet is instantiated, you look for the Rigidbody that is assigned to the instantiated bullet, not to the prefab.

Then you give that Rigidbody a velocity.

If you don’t want the bullet to fall down, diable “Use Gravity” in the Rigidbody component in the Inspector.

Whether you name the Rigidbody variable rb like in the example in the API or something else does not matter.

Okay i will try it later, and let you know if it works, but anyways thanks for your patience with me.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.

Privacy & Terms