Четверг, 18 Апреля 2024, 09:14

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Баг миникарты (А точнее маркера)
Баг миникарты
GidlyДата: Вторник, 28 Августа 2018, 19:55 | Сообщение # 1
был не раз
Сейчас нет на сайте
Как вы все знаете, во многих играх есть миникарта, также она является неотъемлемой частью серии игр 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;
        }
    }
}

Заранее спасибо!
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Баг миникарты (А точнее маркера)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг