problem shoot 3d

Hallo im pretty new to unity, i have seen some tutorials but i can’t find an anwser. Im trying to get my player shoot a bullet from a specific point of the player, the player should be able to shoot 2 kind of bullets, one from each side of it. So far i have made a object called “Bullet” and added a script called “Bullet” to the object.

this is my script so far:

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary
{
public float xMin, xMax, zMin, zMax;
}

public class Bullet : MonoBehaviour
{
public float speed;
public float tilt;
public Boundary boundary;

public GameObject shot;
public Transform shotSpawn;
public float fireRate;

private float nextFire;

void Update()
{
    if (Input.GetButton("Fire1") && Time.time > nextFire)
    {
        nextFire = Time.time + fireRate;
        Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
    }
}

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
    GetComponent.velocity = movement * speed;

    GetComponent.position = new Vector3
        (
            Mathf.Clamp(GetComponent.position.x, boundary.xMin, boundary.xMax),
            0.0f,
            Mathf.Clamp(GetComponent.position.z, boundary.zMin, boundary.zMax)
            );

    GetComponent.rotation = Quaternion.Euler(0.0f, 0.0f, GetComponent.velocity.x * -tilt);
}

}

it says all my “GetComponent” is wrong some how, please help me

Hi,

First off read this page for the correct usage of getcomponent: Unity - Scripting API: GameObject.GetComponent

Besides that i feel that it is easier to split this into 2 scripts, one called “weapon” and one called “bullet”. Attach the weapon to the player/unit and have it deal with detecting input, spawning bullets and managing things like spread, ammo and rate of fire.

The items instatiated by the weapon should be a Prefab with the buller script, the buller script takes care of dealing damage, moving the bullet, collisions, and removing the buller when no longer needed.

However… Unless you are using something like a grenade launcher or something with large visible projectiles it is better to raycast instead of spawning bullets. This is how most games do it due to superior performance. Read about raycasting here:Unity - Scripting API: Physics.Raycast or search here on answers.