Question by
willaay96 · May 28, 2016 at 01:11 PM ·
c#instantiateunity 2dmouse position
Firing to a mouse position
Hi, I sort of have the basics to this, but in the instantiate part, I don't know how to include the mouse position, essentially the debug.drawline will go to the mouse position, but I want to have the instantiate go from firePointPosition to mousePosition.
using UnityEngine;
using System.Collections;
public class Attack : MonoBehaviour {
//public float fireRate = 0;
private bool canAttack;
public float damage = 10;
public float fireDistance = 100;
public LayerMask whatToHit;
private float timeToFire = 0;
private Transform firePoint;
public GameObject projectile;
// Use this for initialization
void Start () {
firePoint = transform.FindChild("FirePoint");
if (firePoint == null) {
Debug.LogError ("No Firepoint");
}
canAttack = true;
}
// Update is called once per frame
void Update () {
//Shoot ();
if (Input.GetButtonDown("Fire1") || Input.GetMouseButton(0)) {
//Shoot ();
//StartCoroutine (Shoot);
StartCoroutine ("Shoot");
}
}
IEnumerator Shoot(){
//Debug.Log ("pow pow");
if (canAttack == true){
canAttack = false;
//shooting to the mousepositions x and y
Vector2 mousePosition = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition - firePointPosition, fireDistance, whatToHit);
Quaternion q = Quaternion.FromToRotation (Vector3.up, (mousePosition - firePointPosition) * fireDistance);
var shoot = Instantiate (projectile, firePointPosition, q);
yield return new WaitForSeconds (0.25f);
canAttack = true;
Debug.DrawLine (firePointPosition, (mousePosition - firePointPosition) * fireDistance, Color.red);
// if (hit.collider != null) {
// Debug.DrawLine (firePointPosition, hit.point, Color.blue);
// }
}
}
}
Comment