Question by
Nattress · Nov 16, 2016 at 10:26 PM ·
2dshootingtop down shooter
Shooting towards the mouse in a top down shooter,
Player Script: using UnityEngine; using System.Collections;
public class PlayerMovement : MonoBehaviour {
private Animator animator;
public Object Spell;
public GameObject Player;
// Use this for initialization
public Vector2 dir;
public float angle;
int movex;
int movey;
int Speed = 2;
int lastDir = 1;
Vector2 myPos;
void Start () {
animator = this.GetComponent<Animator> ();
animator.speed = 0.6f;
}
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.A)) {
movex = -1;
lastDir = 2;
} else if (Input.GetKey (KeyCode.D)) {
movex = 1;
lastDir = 3;
}
else
movex = 0;
if (Input.GetKey (KeyCode.W)) {
movey = 1;
lastDir = 1;
} else if (Input.GetKey (KeyCode.S)) {
movey = -1;
lastDir = 4;
}
else
movey = 0;
if (Input.GetButtonDown ("Fire1")) {
shoot ();
}
GetComponent<Rigidbody2D> ().velocity = new Vector2 (movex * Speed, movey * Speed);
animator.SetInteger ("movex", movex);
animator.SetInteger ("movey", movey);
animator.SetInteger ("LastDir", lastDir);
}
void shoot(){
Vector2 playerCoords = new Vector2 (Player.transform.position.x, Player.transform.position.y);
Instantiate (Spell, playerCoords, Quaternion.identity);
}
}
Spell script: using UnityEngine; using System.Collections;
public class SpellSpawn : MonoBehaviour {
public Rigidbody2D rb;
public Vector2 mouseCoords;
public Vector2 playerPos;
public Vector2 direction;
public Quaternion Rotation;
// Use this for initialization
void Start () {
playerPos = GameObject.Find ("Player").transform.position;
Vector2 mouseCoords = new Vector2 (Input.mousePosition.x, Input.mousePosition.y);
rb = GetComponent<Rigidbody2D> ();
}
// Update is called once per frame
void Update () {
Vector2 direction = mouseCoords - playerPos;
direction.Normalize ();
Quaternion rotation = Quaternion.Euler (0, 0, Mathf.Atan2 (direction.x, direction.y) * Mathf.Rad2Deg);
rb.velocity = direction * 3;
}
}
But this doesn't work, currently the bullets just fly off to the bottom right :S. any help is much appreciated, this took me hours.
Comment
Your answer
Follow this Question
Related Questions
How do I get my character to shoot towards my mouse in a 2D top down? 0 Answers
Shooting Mechanic in 2D Mobile (Unity C#) 1 Answer
Help Spawn Bullet 2D 0 Answers
Triple Shot in 2D TopDown 0 Answers