Question by
IsaacHoward · Mar 10, 2016 at 04:58 AM ·
c#unity 5bullet
How do i get my bullet to shoot where my mouse is pointed and at the same constant speed. unity 5 c# line 60
using UnityEngine; using System.Collections;
public class Bullet : MonoBehaviour {
public Camera camera; // camera object
private float speed = 4f; // bullet speed
private Vector2 clickPos;
private Vector2 testSpeed; // bullet direction
private Vector3 shotDirection;
//public int damage = 10;
public GameObject bulletHitFX;
public GameObject splashDamage;
//public bool isPoison = false;
//public float poisonDamage = 40;
public Collider2D bulletTrigger;
public Rigidbody2D RB2D;
void Start()
{
;
bulletTrigger.enabled = false;
GameObject gun = GameObject.Find("Player");
Gun gunScript = gun.GetComponent<Gun>();
camera = (Camera)GameObject.FindObjectOfType(typeof(Camera)); // get the camera
// get world location of click
clickPos = camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y,0));
// testSpeed = new Vector3(0, 0, 0);
shotDirection = (clickPos - ((Vector2)transform.position));
Destroy(gameObject, 2); // give bullet 2 seconds lifetime
}
void Update()
{
GameObject gun = GameObject.Find("Player");
Gun gunScript = gun.GetComponent<Gun>();
if(gunScript.isCharged == true) //if charging hold fire
{
transform.position = transform.position;
//damage = 50;
speed = 6;
}
else
{
//damage = 10;
speed = 4;
}
if(gunScript.isShooting == false)
{
bulletTrigger.enabled = true;
Debug.Log(clickPos);
GetComponent<Rigidbody2D>().AddForce(clickPos , ForceMode2D.Impulse); //FIXXXXXXXXX HERE
Debug.Log(transform.position);
}
//// move the bullet in the direction
//if (gunScript.shotCount == 5) //CANCER
//{
// transform.position = transform.position + shotDirection * speed * Time.deltaTime;
// damage = 2;
// speed = 2;
// isPoison = true;
//}
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag("Enemy"))
{
GameObject gun = GameObject.Find("Player");
Gun gunScript = gun.GetComponent<Gun>();
Instantiate(bulletHitFX, transform.position, transform.rotation);
if (gunScript.plasmaPerkLevel == 1 && gunScript.enabledGun == "Plasma")
{
Instantiate(splashDamage, transform.position, transform.rotation);
}
Destroy(gameObject);
}
if (other.gameObject.CompareTag("Ground"))
{
GameObject gun = GameObject.Find("Player");
Gun gunScript = gun.GetComponent<Gun>();
Instantiate(bulletHitFX, transform.position, transform.rotation);
if (gunScript.plasmaPerkLevel == 1 && gunScript.enabledGun == "Plasma")
{
Instantiate(splashDamage, transform.position, transform.rotation);
}
Destroy(gameObject);
}
}
}
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612071237im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Bullet spawning at high Player speed 1 Answer
Bullet to Mouse Position? 1 Answer
cannot be an iterator block because `void' is not an iterator interface type 1 Answer
AIPlayer code example needed 0 Answers
ios app crashes on start 0 Answers