- Home /
Spwan and shoot bullet in direction of shooter?
Okay so i'm new in unity and got some problem with shooting bullet in direction of shooter. Could someone help me solve this out? Here are my classes:
using UnityEngine;
using System.Collections;
public class characterCombat : MonoBehaviour {
#region --Pubs--
public GameObject ammo;
public string weaponName = "H&K";
public int weaponMinDmg = 4;
public int weaponMaxDmg = 15;
#endregion
#region --Privs--
#endregion
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown(KeyCode.F))
{
Vector3 playerPosition = new Vector3(transform.position.x,transform.position.y,transform.position.z);
Instantiate(ammo,playerPosition,transform.rotation);
}
}
}
using UnityEngine;
using System.Collections;
public class bulletMove : MonoBehaviour {
#region --Pubs--
public int bulletRange;
public float bulletSpeed;
public GameObject shooter;
#endregion
#region --Privs--
private Vector3 startPos;
private Quaternion rotation;
#endregion
// Use this for initialization
void Start () {
shooter = GameObject.FindGameObjectWithTag("Player");
startPos = shooter.transform.position;
rotation = shooter.transform.rotation;
}
// Update is called once per frame
void Update () {
float distance = Vector3.Distance(startPos,transform.position);
Debug.Log(distance);
float move = bulletSpeed * Time.deltaTime;
transform.Translate(startPos * move);
if(distance >=bulletRange)
{
Destroy(gameObject);
}
}
}
Answer by robertbu · Mar 01, 2013 at 04:14 PM
I think the only change you have to make is on line 55:
transform.Translate(transform.forward * move);
This assumes that you want the bullet coming from the shooter. Your question says, " direction of shooter," which says towards the shooter. If you want the bullet to go towards the shooter, then there are a few more changes to make.
Note the typical way most folks shoot a bullet is to add a Rigidbody (which uses Unity's physics engine).
Answer by Endiss · Mar 01, 2013 at 08:11 PM
Could you show me of example how to shoot bullet with rigidbody?
You've posted your followup question as an 'Answer'. When you do this, it is less likely that new people will give you additional answers (i.e. it already has 2 answers). You can convert it to a comment using the "more" dropdown.
As for an example, if you search the UnityAnswers for 'gun', or 'projectile' or 'shoot' or 'bullet', you will find 1000's of hits, most with code or code fragments. Almost all will use Rigidbodies and AddForce() to shoot their bullets.
Your way would work fine for moving the bullet, but later when you are trying to figure out what it hits, things can become complicated.
One example I wrote can be found here:
http://answers.unity3d.com/questions/396394/shooting-bullets-from-a-ship.html
It includes a very simple pooling mechanism which you may not want.