В прошлой статье мы рассказывали вам как создать анимацию в 2d проекте Unity5. В этой статье мы продолжим и реализуем движение нашей «птицы» — персонажа при помощи компонента rigidbody 2d «физики».
На нашей сцене уже имеется заготовка персонажа с анимацией, добавим к ней компоненты Box Collider 2d и Rigidbody 2d и настроим компонент так как на скриншоте

Далее создадим скрипт к примеру TransformPlayer с таким кодом:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TransformPlayer : MonoBehaviour {
private Transform _transform;
private Rigidbody2D _rigibody;
// Use this for initialization
void Start () {
_transform = GetComponent();
_rigibody = GetComponent();
}
// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.W) && this._transform.localPosition.y <= 5f)
{
_rigibody.gravityScale = -0.5f;
}
else {
_rigibody.gravityScale = 0.5f;
}
}
}
В этом скрипте указано, что при нажатии на кнопку w значение гравитации у персонажа меняется, а при отпускании, клавиши значение восстанавливается, таким образом, персонажа всегда падать, если не нажимать кнопку w.
Далее, как токового движения вперед у нас не реализовано, но симуляцию движения можно реализовать при помощи фоновых объектов.
Добавим на сцену спрайты земли и продублируем 4 раза, на каждый компонент вешаем те же компоненты Box Collider 2d и Rigidbody 2d, создадим еще один скрипт TransformGround

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TransformGround : MonoBehaviour {
public Transform GameObjectCamera;
// Update is called once per frame
void Update()
{
this.gameObject.transform.localPosition = new Vector3(this.gameObject.transform.localPosition.x - 0.1f, this.gameObject.transform.localPosition.y, this.gameObject.transform.localPosition.z);
}
public void OnCollisionEnter2D(Collision2D collision) {
if (collision.gameObject.tag == "barer") {
this.transform.position = new Vector3(GameObjectCamera.transform.position.x, GameObjectCamera.transform.position.y, GameObjectCamera.transform.position.z);
}
}
}В этом скрипте, в методе Update реализована функция постоянного движения объекта по оси х , но при столкновении этого объекта с другим, у которого тэг barer, нашему объекту присвоится другая позиция на сцене, таким образом наши 4 объекта земли будут зациклены в движении .
Теперь подробнее… Создадим на камере два пустых объекта, один разместим слева и добавим Box Collider 2d и Rigidbody 2d, так же присвоим ему тэг, который указали в скрипте barer, а другой справа. Примерно так…

На объектах «земли» укажем этот объект который справа.
Теперь можно поверить запустив игру

Птица управляется, движение земли создает эффект движения птицы. В следующих уроках можно реализовать рандомное появление объектов на сцене и столкновение персонажа с ними. На это все удачных проектов.







