Unity 5 2D How to make a cursor move with keys?
Hello everybody,
I have a problem that may sound strange, but I still want to try to ask it. How do you make a cursor (aim cursor) and make it move not with the mouse, but with keys. I also have a animation so that when you aim to a certain point, the turret will aim that way (it follows the cursor) but I still can't figure it out. So I to aim up K to aim down J to aim left and L to aim right. I do not know how to make it so i am asking here because to me this looks like a mayor wall that i just can't breach. Here I have the script I use now (it moves shoots towards the cursor (mouse):
using UnityEngine;
using System.Collections;
public class BulletPrototype1 : MonoBehaviour
{
public float maxSpeed = 25f;
public GameObject Bullet;
private Transform _myTransform;
private Vector2 _lookDirection;
private void Start()
{
if (!Bullet)
{
Debug.LogError("Bullet is not assigned to the script!");
}
_myTransform = transform;
}
private void Update()
{
/*
mousePos - Position of mouse.
screenPos2D - The position of Player on the screen.
_lookDirection - Just the look direction... ;)
*/
// Calculate 2d direction
// The mouse pos
var mousePos = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
// Player Camera must have MainCamera tag,
// if you can't do this - make a reference by variable (public Camera Camera), and replace 'Camera.main'.
var screenPos = Camera.main.WorldToScreenPoint(_myTransform.position);
var screenPos2D = new Vector2(screenPos.x, screenPos.y);
// Calculate direction TARGET - POSITION
_lookDirection = mousePos - screenPos2D;
// Normalize the look dir.
_lookDirection.Normalize();
}
private void FixedUpdate()
{
if (Input.GetButtonDown("Fire1"))
{
// Spawn the bullet
var bullet = Instantiate(Bullet, _myTransform.position, _myTransform.rotation) as GameObject;
if (bullet)
{
// Ignore collision
Physics2D.IgnoreCollision(bullet.GetComponent<Collider2D>(), GetComponent<Collider2D>());
// Get the Rigid.2D reference
var rigid = bullet.GetComponent<Rigidbody2D>();
// Add forect to the rigidbody (As impulse).
rigid.AddForce(_lookDirection * maxSpeed, ForceMode2D.Impulse);
// Destroy bullet after 5 sec.
Destroy(bullet, 5.0f);
}
else
Debug.LogError("Bullet not spawned!");
}
}
}
Can someone explain me how to do it, and if you can with an example script so that I can see what you mean? Because I need to understand the principle of the script.
Thank you in advance and have a nice day, Daniel.
Your answer
![](https://koobas.hobune.stream/wayback/20220612041736im_/https://answers.unity.com/themes/thub/images/avi.jpg)