Как изменить позицию объекта в unity через скрипт
Перейти к содержимому

Как изменить позицию объекта в unity через скрипт

Перемещение объекта по нажатии кнопки в Unity3d на C#

Сегодня поговорим про движение объекта по нажатию кнопки на экране в Unity3D. Эта тема очень проста, но часто используется в разного рода играх.

Для начала давайте создадим пустой 3D проект. Открываем Unity, нажимаем кнопку в правом верхнем углу с надписью «New». В поле «Project name» указываем название проекта. В строке «Location» указываем расположение проекта на диске. Ниже поля «Location» ставим флажок «3D» и нажимаем «Create project».

image

Затем создаем куб который будет заменять нам землю (GameObject->3D Object->Cube). Потом сделаем его более плоским и растянем. Открываем окно «Inspector», выделяем наш куб, в параметре «Transform» пункт «Scale» задаем x:10, y:0.2, z:10. У нас должно получится такое полотно:

Теперь перемещаем камеру на координаты x:0,y:5,z:0. Затем поворачиваем ее на 90 градусов по оси x. Затем нам нужно создать объект который мы будем перемещать. Создаем сферу (GameObject->3D Object->Sphere), задаем параметр «Position» в «Transform» как x:0, y:1, z:0. После этого чтобы лучше видеть нашу сцену ищем на вкладке «Hierarchy» объект с именем «Directional Light» и задаем ему параметр «Rotation» в «Transform» как x:180, y:-30, z:0. Наш проект теперь должен выглядеть вот так:

Теперь нам нужна кнопка, по нажатию которой мы будем определять двигать ли наш объект. Сначала создаем экран на котором будет располагаться наша кнопка (GameObject->UI->Canvas). Следующий этап — создаем кнопку (GameObject->UI->Button). Затем надо написать скрипт для перемещения нашей сферы. В окне «Project» выбираем «Create», а там выбираем C# Script. Далее приведен код:

Сначала создаем переменную нашего объекта для перемещения. Вторая переменная — это расстояние на которое мы будем перемещать объект. Публичный метод «OnButtonDown» отвечает за перемещение при нажатии кнопки. Сначала задаем переменной S значение 1 или 2, после чего двигаем объект по оси X на S расстояние.

Затем выделяем нашу кнопку, в панели «Inspector» в самом низу нажимаем кнопку «Add Component», выбираем в «Scripts» наш код. Далее в компоненте «Button» снизу в пункте «On Click ()» нажимаем «+». Нажимаем на получившееся окно в параметре «On Click ()» в поле, где стоит «None (Object)». В нем выбираем нашу кнопку. Вот как это должно выглядеть:

Потом в нашем параметре «On Click ()» выбираем блок в котором стоит «No Function», внутри него выбираем название нашего кода, а в нем выбираем метод «OnButtonDown()». Теперь когда кнопка настроена переходим к коду. В окне «Inspector» должен отображаться компонент с названием нашего кода. В поле «Sphere» выбираем нашу сферу. Вот что должно получится:

Затем в окне «Game» нажимаем на «Maximize On Play». Теперь нажимаем на кнопку запуска игры. На экране отображается наша кнопка. Если кликнуть по ней, то наша сфера переместится по оси X.

Большое спасибо за прочтение публикации. Надеюсь, Вы приобрели для себя новые знания.

Передвинуть объект в Unity [закрыт]

Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 1 год назад .

Помогите пожалуйста. Нужен скрипт для 2D игры в Unity. Нужно чтобы при ОДИНОЧНОМ нажатии кнопки персонаж передвигался на n-количество влево (или вправо в зависимости от кнопки). Главная проблема в том, чтобы персонаж не телепортировался, а плавно перемещался.

Можно реализовать это, например, так. Повесить на Вашего игрока (который является Rigidbody2D ) скрипт PlayerController , в котором прописать такой код:

В Inspector-е не забудьте указать значение переменной speed (например, 4). От величины speed будет зависеть шустрость Вашего персонажа.

Гляньте этот туториал, тут очень толково всё объясняется. Можно добавить возможность прыжков, поворота персонажа при ходьбе в разные стороны, анимацию хождения и прыжков.

UPDATE С учетом уточнения о том, что персонаж должен плавно перемещаться при одноразовом нажатии на заданную кнопку, код меняется. В таком случае логично использовать Couroutine . Например, так.

Тогда в FixedUpdate() будет такой код (в примере я использовала кнопки A и S для управления персонажем):

Тут ключевой метод — Lerp . Он производит линейную интерполяцию между двумя точками, поэтому движение объекта плавное.

C# Помогите с перемещением объекта в указанные координаты в Unity

// Update is called once per frame
void Update()
<
S = Random.Range(1, 1);
if (Input.GetKey(KeyCode.W))
<
Body.transform.Translate(0, -S, 0);
>
if (Input.GetKey(KeyCode.S))
<
Body.transform.Translate(0, S, 0);
>
if (Input.GetKey(KeyCode.A))
<
Body.transform.Translate(-S, 0, 0);
>
if (Input.GetKey(KeyCode.D))
<
Body.transform.Translate(S, 0, 0);
>
>
>

это чтобы чтобы изменять позицию нажатиями на клавиши на клавиатуре в моём случае это Body

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *