Menu
CoddyTech

Поднять флаг

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 32 из 85.

localPosition можно считывать и изменять в каждом кадре, как и position. Дочерний объект, который должен подниматься вдоль родительского объекта — например, кабина вверх по башне или флаг вверх по мачте, — перемещается вдоль localPosition и сравнивает свою локальную высоту с верхом, поэтому он работает независимо от того, где находится родительский объект:

if (transform.localPosition.y < 10)
{
    transform.localPosition += new Vector3(0, 2 * Time.deltaTime, 0);
}

Если вместо этого сравнивать с position.y, верх будет смещаться каждый раз, когда родительский объект находится выше или ниже.

challenge icon

Задание

Средне

Подними флаг по мачте с помощью стрелки вверх.

  1. В Update() напиши if (Input.GetKey(KeyCode.UpArrow) && transform.localPosition.y < 4).
  2. Внутри него прибавь new Vector3(0, climb * Time.deltaTime, 0) к transform.localPosition.

Нажми «Играть» и удерживай стрелку вверх: флаг поднимется на верхушку мачты и остановится. Затем нажми «Проверить».

Попробуйте сами

using UnityEngine;

public class Hoist : MonoBehaviour
{
    public float climb = 1f;

    void Start()
    {
        transform.localPosition = new Vector3(0.6f, 1, 0);
    }

    void Update()
    {
        // Пока удерживается клавиша со стрелкой вверх, поднимайтесь, пока высота относительно Ship не достигнет 4
    }
}

Все уроки раздела Основы скриптинга в Unity

Потренируйтесь самостоятельно: Песочница Unity