Question by
penguinsrepic · Apr 04, 2020 at 03:11 PM ·
shootingtopdownaim
Top down shooting in rotmg style
Pretty much I'm trying to make it like rotmg where you can shoot in any direction but you can only walk in four directions. I pretty much have no clue how to set this up. I want the bullet to start a bit away from the player in the direction of the mouse. This is what I have right now. This is the Player movement script.
public class PlayerMovement : MonoBehaviour
{
public float moveSpeed = 5f;
public Rigidbody2D rb;
public Camera cam;
public Animator animator;
Vector2 movement;
Vector2 mousePos;
// Update is called once per frame
void Update()
{
// Input
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
mousePos = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position).normalized;
animator.SetFloat("Horizontal", movement.x);
animator.SetFloat("Vertical", movement.y);
animator.SetFloat("Speed", movement.sqrMagnitude);
if (movement.x == 1 || movement.x == -1 || movement.y == 1 || movement.y == -1)
{
animator.SetFloat("lastMoveX", movement.x);
animator.SetFloat("lastMoveY", movement.y);
}
}
void FixedUpdate()
{
// Movement
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
Vector2 lookDir = mousePos - rb.position;
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg;
// rb.rotation = angle;
}
}
This is the shooting script.
public class Shooting : MonoBehaviour
{
public Transform firePoint;
public GameObject bulletPrefab;
public float bulletForce = 20f;
public float firePointExtension = 0.5f;
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
void Shoot()
{
GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
rb.AddForce(firePoint.up * bulletForce, ForceMode2D.Impulse);
}
}
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612230509im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How can I make my player's gun point at the cursor, not the player itself? 1 Answer
2D topdown projectiles movement 0 Answers
How can I make an "aim System" for my tank game? (See where shell will land) 0 Answers
How to check if a 2D object is ahead of the player? 1 Answer
2D Top down projectile help (not moving) 0 Answers