Пятница, 29 Марта 2024, 18:44

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Маркер на границе миникарты (Дергается маркер при приближении игрока к нему)
Маркер на границе миникарты
GidlyДата: Суббота, 11 Августа 2018, 00:46 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я, будучи профаном в области Mathf и т.п. не очень понимал ответы, которые мне писали, кстати всем спасибо, вы поставили мне цель. И вот, с помощью своей криворукости и скорее всего единственного видео на youtube связанного с подобными маркерами, я накалял такую вот дичь
Код
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 = 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)
        {
            Vector3 parentPos = transform.position;
            parentPos.y = offset_y;
            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;
        }
    }
}

Все вроде работает, когда маркер уходит за радиус карты, он не пропадает, но когда перс начинает к нему приближаться, а тот еще не в радиусе, маркер начинает дергаться, как это решить? Спасибо!


Сообщение отредактировал Gidly - Суббота, 11 Августа 2018, 13:10
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Маркер на границе миникарты (Дергается маркер при приближении игрока к нему)
  • Страница 1 из 1
  • 1
Поиск:

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