Unity3D - создание движения персонажа и его анимация! Часть 2 (Платформер)
Снова всем привет. Это вторая часть статьи про движение персонажа в Unity3D. Этот туториал опять будет с примером. Тут мы рассмотрим движение платформера. Но теперь без анимации. Про неё можете прочитать в предыдущей статье, и там же описано передвижение от третьего лица. итак. Тут всё будет чуток проще, но для прыжка мы теперь не будем прибавлять позицию. Теперь мы будем давать пинка под зад персонажу импульсом rigidbody импульс физическому телу. Приступим. (Конечно созаём скрипт Move. Про создание сцены, где будет всё происходить, вы так же можете прочитать опять же в предыдущем туториале) Для начала привяжем к скрипту обязательный компонент. Над классом напишем "[RequireComponent(typeof(Rigidbody))]".
Code
using UnityEngine; using System.Collections;
[RequireComponent(typeof(Rigidbody))] public class Move : MonoBehaviour { }
Вот. Теперь объявим переменные. Игрока, его ригидбоди скорости, скорости прыжка, булевую переменную (проверяющую прыжок), и саму платформу, с которой при приземлении будет сталкиваться игрок (в инспекторе укажите, ага?).
Code
public GameObject Player; public Rigidbody ThisRigidpody; public int speed = 5; public int JumpSpeed = 8; public bool Jumping; public GameObject Platform;
В старте присваиваем переменной игрока и ригидбоди компоненты, на объекте которых висит скрипт.
Теперь будем, для передвижения влево и вправо, прибавлять позицию. Но тут ещё всё зависит от того, как вы поставите игрока (у меня игрок - циллиндр). У меня он смотрит вбок, значит, чтобы он шёл по бокам, нужно прибавлять и отнимать по forward'у... Делаем в "void Update()".
Итак. У нас всё ходит. Теперь сделаем прыжок. Мы просто придадим импульс ригидбоди игрока. Вот как это делается: " ThisRigidpody.AddForce(Player.transform.up * JumpSpeed, ForceMode.Impulse);". Теперь давайте напишем условие.
Code
if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.UpArrow)) { if (Jumping == false) { Jumping = true; ThisRigidpody.AddForce(Player.transform.up * JumpSpeed, ForceMode.Impulse); } }
Мы проверяем, если булевая переменная "Jumping = false", то тогда можно прыгать. То есть придаётся импульс физическому телу. Теперь давайте доделаем всё в проверке булевой переменной. Создадим новый метод. "void OnCollisionEnter(Collision collis)".
В методе мы проверяем, если коллизия, это платформа, то "Jumping = false". И снова можно прыгать. Ну... Вроде всё.
Code
using UnityEngine; using System.Collections;
[RequireComponent(typeof(Rigidbody))] public class Move : MonoBehaviour { public GameObject Player; public Rigidbody ThisRigidpody; public int speed = 5; public int JumpSpeed = 8; public bool Jumping; public GameObject Platform;
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Unity3D - создание движения персонажа и его анимация! Часть 2 (Платформер)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.