- Home /
Question by
fluxhackspro · Sep 13, 2017 at 08:50 AM ·
rotationrigidbodyaddforce
Instantiating bullet and moving forward with rigidbody
Hello i have a script for the players shooting, the original script works fine (script 1). But when i try to add a bullet spread i rotate it with a random value on the y axis but it doesnt rotate and instead just goes one way, even if i rotate the player. (script 2)
Any help is welcome.
UPDATE I changed the code a bit and now it works, but it doesnt go where the player looks
nextFire = Time.time + fireRate;
//spawn bullet
ammo--;
GameObject spawnedBullet2 = Instantiate (bulletPrefab) as GameObject;
spawnedBullet2.GetComponent<Laser> ().laserDamage = damage;
spawnedBullet2.transform.position = spawnPos.transform.position;
Rigidbody rb1 = spawnedBullet2.GetComponent<Rigidbody> ();
//spawnedBullet2.transform.rotation = transform.rotation;
Quaternion rot = new Quaternion(transform.rotation.x, spawnPos.transform.rotation.y + Random.Range (-recoil, recoil), spawnPos.transform.rotation.z, 2);
spawnedBullet2.transform.rotation = rot;
rb1.AddForce (spawnedBullet2.transform.forward * 1000);
//rb1.velocity = spawnedBullet2.transform.forward * force;
(Script 2)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ShootScript : MonoBehaviour {
public string weaponName = "null";
public GameObject bulletPrefab;
public float force;
public float fireRate;
public Transform spawnPos;
public float recoil;
public float damage;
float nextFire;
public float ammo;
public float maxAmmo;
public Text ammoP1;
public Text ammoP2;
void Start ()
{
ammo = maxAmmo;
}
void FixedUpdate ()
{
//fix ammo
if (ammo > maxAmmo)
{
ammo = maxAmmo;
}
if (ammo < 0)
{
ammo = 0;
}
//shoot
if (this.tag == "P1")
{
//text
ammoP1.text = ammo.ToString("F0");
if (ammo > 0)
{
if (Input.GetKey (KeyCode.Space) && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
//spawn bullet
ammo--;
GameObject spawnedBullet2 = Instantiate (bulletPrefab) as GameObject;
spawnedBullet2.GetComponent<Laser> ().laserDamage = damage;
spawnedBullet2.transform.position = spawnPos.transform.position;
Rigidbody rb1 = spawnedBullet2.GetComponent<Rigidbody> ();
//spawnedBullet2.transform.rotation = transform.rotation;
spawnedBullet2.transform.rotation = new Quaternion (spawnPos.transform.rotation.x, spawnPos.transform.rotation.y + Random.Range (-recoil, recoil), spawnPos.transform.rotation.z, 0);
rb1.AddForce (spawnedBullet2.transform.forward * 1000);
//rb1.velocity = spawnedBullet2.transform.forward * force;
}
}
}
if (this.tag == "P2")
{
//text
ammoP2.text = ammo.ToString("F0");
if (ammo > 0)
{
if (Input.GetKey (KeyCode.Space) && Time.time > nextFire)
{
nextFire = Time.time + fireRate;
//spawn bullet
ammo--;
GameObject spawnedBullet2 = Instantiate (bulletPrefab) as GameObject;
spawnedBullet2.GetComponent<Laser> ().laserDamage = damage;
spawnedBullet2.transform.position = spawnPos.transform.position;
Rigidbody rb1 = spawnedBullet2.GetComponent<Rigidbody> ();
//spawnedBullet2.transform.rotation = transform.rotation;
spawnedBullet2.transform.rotation = new Quaternion (spawnPos.transform.rotation.x, spawnPos.transform.rotation.y + Random.Range (-recoil, recoil), spawnPos.transform.rotation.z, 0);
rb1.AddForce (spawnedBullet2.transform.forward * 1000);
//rb1.velocity = spawnedBullet2.transform.forward * force;
}
}
}
}
}
Comment