Вторник, 23 Апреля 2024, 17:06

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » RobitI [14]
Результаты поиска
RobitIДата: Четверг, 20 Апреля 2023, 00:26 | Сообщение # 1 | Тема: Как сделать так чтобы частицы обтекали объект при сталкивани
был не раз
Сейчас нет на сайте
В своей 2D игре я сделал огонь с помощью parctile system и хочу сделать так, чтобы этот огонь обтекал некоторые объекты при соприкосновении, например камень, как мне это сделать?
RobitIДата: Суббота, 01 Апреля 2023, 15:27 | Сообщение # 2 | Тема: Как двигать предмет при определённых условиях
был не раз
Сейчас нет на сайте
Цитата falcoware ()
RobitI, OnCollisionEnter смотрели функцию?
Да, но всё равно объект поддаётся толчку игнорируя при этом условия


Сообщение отредактировал RobitI - Суббота, 01 Апреля 2023, 15:28
RobitIДата: Суббота, 01 Апреля 2023, 00:50 | Сообщение # 3 | Тема: Как двигать предмет при определённых условиях
был не раз
Сейчас нет на сайте
Я хочу сделать так, чтобы мой персонаж мог двигать объекты при определённых условиях, иначе объект, который надо двигать не будет сдвинут с места, но у меня не получается правильно написать код.
Код
public float pushForce = 10f; // сила толчка
        private bool canPush = false; // можно ли толкать объект

        private void OnCollisionStay(Collision collision)
        {
            if (collision.gameObject.CompareTag("Player") && PlayerTransform.FormEarth.activeInHierarchy)
            {
                canPush = true;
            }
        }

        private void OnCollisionExit(Collision collision)
        {
            if (collision.gameObject.CompareTag("Player") && PlayerTransform.FormEarth.activeInHierarchy)
            {
                canPush = false;
            }
        }

        private void FixedUpdate()
        {
            if (canPush)
            {
                GetComponent<Rigidbody>().AddForce(transform.forward * pushForce, ForceMode.Impulse);
            }
        }


Сообщение отредактировал RobitI - Суббота, 01 Апреля 2023, 00:51
RobitIДата: Вторник, 21 Марта 2023, 23:55 | Сообщение # 4 | Тема: Как поменять положение слоёв объекта в самом движке
был не раз
Сейчас нет на сайте
Мой персонаж в игре был сделан с помощью фотошопа, так что положение слоёв частей его тела были за ранее определены и без данной программы их не положение не изменить, и из за этого у меня не получается сделать анимацию корректно, например флосс. Есть ли какой ни будь способ поменять положение слоев объекта прямо в unity без фотошопа?

Добавлено (22 Марта 2023, 01:30)
---------------------------------------------
Я нашел где это делается, в параметре sprite renderer

RobitIДата: Пятница, 03 Марта 2023, 00:13 | Сообщение # 5 | Тема: Как скрывать и показывать элементы при условии
был не раз
Сейчас нет на сайте
falcoware, спасибо, переписал код и всё работает.
RobitIДата: Четверг, 02 Марта 2023, 00:09 | Сообщение # 6 | Тема: Как скрывать и показывать элементы при условии
был не раз
Сейчас нет на сайте
У меня в игре есть 5 разных объектов и игрок, при прикосновении к 1 из объектов, получает значение переменной данного объекта. Проблема в том, что у меня не получается сделать событие, которое должно скрывать определённый объект в зависимости от значения переменной игрока связанной с переменной объекта, а остальные объекты - показывать. Как мне это исправить?
Код для получения переменной из объекта:
Код
public class TransformMarks : MonoBehaviour
{
    public GameObject Form;
    public string Element;
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            PlayerTransform.CurrentElement = Element;
            Debug.Log(PlayerTransform.CurrentElement);
        }
    }
}


Код события скрытия и показа объектов:
Код
public class PlayerTransform : MonoBehaviour
{
    public static string CurrentElement = "Earth";
    public static GameObject TransfMark;

    void Update()
    {
        if(CurrentElement == "Fire")
        {
            TransfMark = GameObject.Find("FireTransform");
            Destroy(TransfMark);
        }
        else
        {
            TransfMark = GameObject.Find("FireTransform");
            TransfMark.gameObject.SetActive(true);
        }
    }
}
RobitIДата: Среда, 22 Февраля 2023, 23:37 | Сообщение # 7 | Тема: Как изменить параметры элемента, не изменяя дочерние?
был не раз
Сейчас нет на сайте
Я хочу сделать для своего персонажа анимацию дыхания через изменения размеров костей, но проблема в том, что при изменении параметров родительского элемента, изменяются параметры дочерних элементов, так что, пожалуйста, скажите как изменить параметры только родительского элемента.
RobitIДата: Среда, 15 Февраля 2023, 03:27 | Сообщение # 8 | Тема: Как добавить картинку в 2.5D платформер?
был не раз
Сейчас нет на сайте
Я хочу добавить картинки в свой платформер, которые при прикосновении с игроком вызывали событие, но проблема в том, что я не вставить эти картинки в игру. Картинки, которые я хочу добавить это простые картинки с обрезанным фоном.
RobitIДата: Суббота, 04 Февраля 2023, 00:54 | Сообщение # 9 | Тема: Как настроить порядок появления врагов в Tower Defense?
был не раз
Сейчас нет на сайте
Я хочу сделать так, чтобы в волне враги выходили в определённом порядке, например сначала появилось гоблины, потом орки, потом снова гоблины, а в конец волны появляется огр. На всех сайтах и видео, которые я посмотрел, было показано спавн 1 типа врага с определённым интервалом за каждую волну. Пожалуйста, скажите, как это реализовать
RobitIДата: Вторник, 10 Января 2023, 13:44 | Сообщение # 10 | Тема: Как сделать конец пути с ассетом "Bezier Path Creator"
был не раз
Сейчас нет на сайте
Цитата TLT ()
Поставь в конце пути объект (домик или просто прозрачный), при столкновении врага с которым происходит отъём жизней, де активация/удаление врага

Из-за безье не работает столкновение, объект враг просто проходит сквозь "конец пути"
RobitIДата: Суббота, 07 Января 2023, 12:12 | Сообщение # 11 | Тема: Как сделать конец пути с ассетом "Bezier Path Creator"
был не раз
Сейчас нет на сайте
Цитата TLT ()
Подробнее, что за конец? =) Чтобы в игре после прохождения круга был финиш и гонка прерывалась, либо как в этом плагине сделать трассу от точки до точки (спринт)?

Я делаю tower defense, так что, мне надо чтобы враг после того, как он дойдет до конца безье, не возвращался в начало, а отнимал жизни
RobitIДата: Пятница, 06 Января 2023, 12:27 | Сообщение # 12 | Тема: Как сделать конец пути с ассетом "Bezier Path Creator"
был не раз
Сейчас нет на сайте
Нашел ассет который создает путь/дорогу, но не знаю как программно сделать конец пути.

https://assetstore.unity.com/packages/tools/utilities/b-zier-path-creator-136082#description
RobitIДата: Четверг, 05 Января 2023, 13:47 | Сообщение # 13 | Тема: Как создать безье путь для Tower Defense на Unity?
был не раз
Сейчас нет на сайте
Цитата Core ()
Как я вижу, в этом скрипте идет только отрисовка gizmos. Логически безье тут не создается.

Я это и имел в виду, просто неправильно выразился.
RobitIДата: Среда, 04 Января 2023, 17:04 | Сообщение # 14 | Тема: Как создать безье путь для Tower Defense на Unity?
был не раз
Сейчас нет на сайте
Я хочу сделать плавное передвижение противников на округленных путях, но у меня не получается объединить скрипт с передвижением объекта по безье со скриптом по составляющей Tower Defense

Скрипт для создания безье:

[SerializeField]
private Transform[] controlPoints;

private Vector3 gizmosPosition;

private void OnDrawGizmos()
{
for (float t = 0; t <= 1; t += 0.05f)
{
gizmosPosition = Mathf.Pow(1 - t, 3) * controlPoints[0].position + 3 * Mathf.Pow(1 - t, 2) * t * controlPoints[1].position + 3 * (1 - t) * Mathf.Pow(t, 2) * controlPoints[2].position + Mathf.Pow(t, 3) * controlPoints[3].position;

Gizmos.DrawSphere(gizmosPosition, 0.25f);
}

Gizmos.DrawLine(new Vector3(controlPoints[0].position.x, controlPoints[0].position.y, controlPoints[0].position.z), new Vector3(controlPoints[1].position.x, controlPoints[1].position.y, controlPoints[1].position.z));
Gizmos.DrawLine(new Vector3(controlPoints[2].position.x, controlPoints[2].position.y, controlPoints[2].position.z), new Vector3(controlPoints[3].position.x, controlPoints[3].position.y, controlPoints[3].position.z));

}

Скрипт для передвижения объекта по безье:

[SerializeField]
private Transform[] routes;

private int routeToGo;

private float tParam;

private Vector3 objectPosition;

private float speedModifier;

private bool coroutineAllowed;

// Start is called before the first frame update
void Start()
{
routeToGo = 0;
tParam = 0f;
speedModifier = 0.5f;
coroutineAllowed = true;
}

// Update is called once per frame
void Update()
{
if (coroutineAllowed)
{
StartCoroutine(GoByTheRoute(routeToGo));
}
}

private IEnumerator GoByTheRoute(int routeNum)
{
coroutineAllowed = false;

Vector3 p0 = routes[routeNum].GetChild(0).position;
Vector3 p1 = routes[routeNum].GetChild(1).position;
Vector3 p2 = routes[routeNum].GetChild(2).position;
Vector3 p3 = routes[routeNum].GetChild(3).position;

while (tParam < 1)
{
tParam += Time.deltaTime * speedModifier;

objectPosition = Mathf.Pow(1 - tParam, 3) * p0 + 3 * Mathf.Pow(1 - tParam, 2) * tParam * p1 + 3 * (1 - tParam) * Mathf.Pow(tParam, 2) * p2 + Mathf.Pow(tParam, 3) * p3;

transform.position = objectPosition;
yield return new WaitForEndOfFrame();
}

tParam = 0;
routeToGo += 1;

if (routeToGo > routes.Length - 1)
{
routeToGo = 0;
}

coroutineAllowed = true;

}
Пожалуйста, скажите, как переделать эти скрипты для нужного результата
Форум игроделов » Записи участника » RobitI [14]
  • Страница 1 из 1
  • 1
Поиск:

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