Made a simple Lock on system for a top down. I have some to dos, like limiting the search to a collider only, and make the rotation smooth instead of instant.
Im just learning so this is probably basic stuff, but how would i approach making it a toggle instead of holding the key down?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.Universal;
using UnityEngine.Experimental.Rendering.Universal;
public class LockOn : MonoBehaviour {
private CharMovementBehaviour m_xMove;
private GameObject m_xPlayer;
private GameObject Enemy;
GameObject [] enemy;
private Transform playerpos;
GameObject closest;
private GameObject CloseEnemyInstance;
Vector2 target;
GameObject FindClosestEnemy()
{
enemy = GameObject.FindGameObjectsWithTag("Enemy");
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in enemy) {
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if(curDistance< distance)
{
closest = go;
distance = curDistance;
}
}
return closest;
}
void Update()
{
if (Input.GetKey(KeyCode.Tab) ){
CloseEnemyInstance = FindClosestEnemy();
Vector2 target = CloseEnemyInstance.transform.position;
m_xPlayer = GameUtil.xGetPlayer();
playerpos = m_xPlayer.GetComponent<Transform> ();
Vector2 ppos = playerpos.transform.position;
m_xMove = m_xPlayer.GetComponent<CharMovementBehaviour>();
float dist = Vector2.Distance (target, ppos);
if (dist <= 30 ){
m_xMove.vInstantFacePoint(target);
}
}
}
}