Как вы все знаете, во многих играх есть миникарта, также она является неотъемлемой частью серии игр Grand Theft Auto начиная с 3 части. Я делаю свою игру в жанре "типа гташка". Но путь мне перегородил баг маркера миникарты. Сам маркер как-бы движется за игроком на определенном расстоянии, и таким образом он рисуется на границе миникарты, но когда ГГ начинает приближаться к маркеру он начинает быстро перемещаться то в свою начальную точку, то в заданное расстояние, тем самым дергаясь. Вот его скрипт:Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Marker : MonoBehaviour {
[SerializeField] float SizeMultiplier;
[SerializeField] float offset_y = 7.5f;
[SerializeField] float MapDistance;
[SerializeField] float MapRMultiplier;
[SerializeField] Sprite S_norm;
[SerializeField] Sprite S_Arrow;
Vector3 StartPos;
float x;
float z;
float r;
float fi;
float R;
public Camera map_camera;
public Transform target;
public RenderTexture render_texture_rect;
public Material minimap;
public Sprite marker;
void Start()
{
StartPos = this.transform.position;
}
void FixedUpdate ()
{
R = render_texture_rect.width * map_camera.orthographicSize * MapRMultiplier;
x = transform.position.x - target.position.x;
z = transform.position.z - target.position.z;
r = Mathf.Sqrt(Mathf.Pow(x, 2)+Mathf.Pow(z, 2));
fi = Mathf.Atan2(z, x);
if (r < R)
{
transform.position = StartPos;
minimap.mainTexture = marker.texture;
}else if (r >= R)
{
transform.position = new Vector3(R * MapDistance * Mathf.Cos(fi) + target.position.x, offset_y, R * MapDistance * Mathf.Sin(fi) + target.position.z);
minimap.mainTexture = marker.texture;
}
}
}
Заранее спасибо!