@funtot

Как сделать смену обьекта при приближении?

как сделать чтоб когда я подходил к спрайт обьекту то он менял прозрачность? отслеживать типо насколько далеко персонаж от обьекта и переносить это в значения, но чтоб начиналось отслеживание с определенного момента
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
Kentavr16
@Kentavr16
long cold winter
using UnityEngine;

public class TransparencyController : MonoBehaviour
{
    public Transform playerTransform; // Ссылка на трансформ игрока
    public Transform objectTransform; // Ссылка на трансформ объекта, прозрачность которого мы хотим контролировать

    public float maxDistance = 10f; // Максимальное расстояние, при котором объект полностью прозрачен
    public float minDistance = 2f; // Минимальное расстояние, при котором объект полностью непрозрачен

    private SpriteRenderer objectRenderer; // Ссылка на компонент SpriteRenderer объекта

    void Start()
    {
        // Получаем компонент SpriteRenderer объекта
        objectRenderer = objectTransform.GetComponent<SpriteRenderer>();
    }

    void Update()
    {
        // Рассчитываем вектор от игрока к объекту и нормализуем его
        Vector3 playerToObject = objectTransform.position - playerTransform.position;
        float distance = playerToObject.magnitude;
        float normalizedDistance = Mathf.Clamp01((distance - minDistance) / (maxDistance - minDistance));

        // Изменяем прозрачность объекта в зависимости от нормализованного расстояния
        Color objectColor = objectRenderer.color;
        objectColor.a = 1f - normalizedDistance; // Инвертируем значение прозрачности
        objectRenderer.color = objectColor;
    }
}


Можно создать пустой объект, к нему прикрепить скрипт и задать в полях ссылки на объекты.

Что нужно поучить - базу игрового движка (здесь в частности использование трансформа игровых объектов), почитать про векторы в юнити. Почитать про нормализованные векторы и векторную математику - крайне удобная практика. Ну и практика, практика и еще раз практика.

П.С. - при ответе использовал чатГПТ. Проблема в том что не зная основ юнити невозможно даже четко сделать запрос к ИИ. Так что удачи в обучении.
Скрипт проверен и рабочий.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы