2D Игра на Unity 5 | Урок #9 - Прыжки на другие блоки

preview_player
Показать описание
Пришло время научить наш кубик прыгать. Теперь он будет способен прыгать на другие блоки. Мы будем использовать физику в unity чтобы реализовать подобный функционал в нашей игре.

✔ ----

✔ -------------

Помощь в развитии канала.
* Яндекс Деньги: 410014343706921

* Кошельки WebMoney:
- Доллар: Z331064341236
- Гривна: U386388718252
- Рубль: R214610220703
Рекомендации по теме
Комментарии
Автор

Сыграем в игру. Кто красивее напишет тело функции RandScale
return Random.Range(0, 100) > 80 ? Random.Range(1.2f, 2f) : Random.Range(1.2f, 1.5f);

Uninstall_Game
Автор

Не понимаю почему позиция по х должна быть всегда -0.3 он же будет прыгать всегда в одну позицию. При этом в неправильную, почему у Гоши -0.3 в любом месте, куда бы не прыгнул кубик. У меня везде позиция разная.

DiFiS
Автор

Не всегда срабатывает Player Lose, когда это нужно. Вместо него Next one

ДаскШайн
Автор

Если это для кого еще актуально.Если у вас после того как кубик падает в консоле спамиться что вы проиграли просто уберите время.И у вас выведет что вы проиграли 1 раз, если кубик удаляется слишком быстро то просто увеличите диапазон по "у" с какого у вас он будет удаляться.
if (mainCube!=null) {
if < -18f)
{
Destroy(mainCube);
print("Player Lose2");
lose = true;
}
}

АлексейКостюнин-ко
Автор

Делал всё по уроку, под конец запутался, появилась куча ошибок.
Переписал скрипт заново уже сам, иногда подглядывая в резервную копию и всё заработало!

inkrement
Автор

Почему когда кубик падает на платформу, сообщение "Next One" пишется 1 раз у Гоши. Ведь идет проверка, кубик спит? и jumped == true? У меня спамит этим сообщением. Что-то очень много нестыковок получается, либо он за кадром что-то изменяет где-то, либо из-за неточности последовательности действий, получаются различия, т.к. у меня немного по другому начинается игра. Я не делал ступеньки, оставил свою механику начала. Но смысла все равно не нахожу. Почему 1 раз сообщение у Гоши пишет. Слишком быстро все, и некоторые нюансы хрен разберешь.

DiFiS
Автор

Привет, классные уроки, спасибо за старание)), народ подскажите что не так, вообщем не работает должным образом проверка, хотя код переписан один в один, главное ошибок то ведь нет все работает, но только не проверка на lose

akamehioda
Автор

Объясните пожалуйста, почему у меня кубик прыгает и по координате z тоже. У гоши чётко двигается по х и у только, а у меня летит в разные стороны. Как мне кажется, здесь нужны компоненты именно для 2D физики - rigidbody2d и boxcollider2d, но гоша вроде ставит обычные и у него всё работает. Как так? С добавлением 2D у меня куча ошибок выбивает.

АндрюхаХантер
Автор

!!!НЕ РАБОТАЕТ АНИМАЦИЯ ПРИЖКА!!! Что делать?

excl_mark
Автор

Кубик выдает Next Block в любом случае(где бы он не стоял) помогите!

fallonight_
Автор

почему используешь print а не Debug.Log?

suren
Автор

всем привет, почему как добавил твердое тело на кубик, он улетает.?

denisl
Автор

Я думал что с ума сойду, пока закончю этот урок. Геймдев явно не для меня....

vladyslavovchar
Автор

Почему-то, когда попадаю бесконечно пишет Next One

radiogaga
Автор

помогите, почему мой кубик улетает вникуда после того как я написал функцию void FixedUpdate?

yaroslavischcencko
Автор

Помогите!Мне пишет типа невозможно использовать локальную переменную перед её объявлением.
Работаю на Windows
Код:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Detector : MonoBehaviour
{
public GameObject buttons, p_Game, PlanetE, PlanetS, PlanetM, PlanetV, BG, Plt, spawn_b, Star;
public Text play, name;

private bool clicked;

void OnMouseDown()
{
if (!clicked)
{
clicked = true;

name.text = "0";
= -5f;
= -150f;







= true;
StartCoroutine(animStop());

}

IEnumerator animStop;
{
Star.AddComponent <Rigidbody> ();
}
}
}

MAXISInt
Автор

using System.Collections;
using UnityEngine;

public class CubeJump : MonoBehaviour {

public GameObject mainCube;
private bool animate, nextBlock, lose;
private float scratch_speed = 0.5f, startTime, yPosCube;

void Start () {
StartCoroutine (CanJump ());
}

void FixedUpdate () {
if (animate && > 0.4f)
PressCube (-scratch_speed);
else if (!animate && mainCube != null) {
if < 1f)
PressCube (scratch_speed * 3f);
else if != 1f)
mainCube.transform.localScale = new Vector3 (1f, 1f, 1f);
}

if (mainCube != null) {
if < -8.5f) {
Destroy (mainCube, 1f);
print ("Player Lose");
lose = true;

}
}
}

void OnMouseDown () {
if (nextBlock && mainCube.GetComponent <Rigidbody> ()) {
animate = true;
startTime = Time.time;

yPosCube =
}
}
}

void OnMouseUp () {
if (nextBlock && mainCube.GetComponent <Rigidbody> ()) {
animate = false;

//Jump
float force, diff;
diff = Time.time - startTime;
if (diff < 3f)
force = 190 * diff;
else
force = 280f;
if (force < 60f)
force = 60f;

mainCube.GetComponent <Rigidbody> ().AddRelativeForce (mainCube.transform.up * force);
mainCube.GetComponent <Rigidbody> ().AddRelativeForce (mainCube.transform.right * -force);

StartCoroutine (checkCubePos ());
nextBlock = false;
}
}

void PressCube (float force) {

+= new Vector3 (0f, force * Time.deltaTime, 0f);
mainCube.transform.localScale += new Vector3 (0f, force * Time.deltaTime, 0f);
}

IEnumerator checkCubePos () {
yield return new WaitForSeconds (1.5f);
if (yPosCube == {
print ("Player Lose");
lose = true;
}
else {
while (!mainCube.GetComponent <Rigidbody> ().IsSleeping ()) {
yield return new WaitForSeconds (0.05f);
if (mainCube == null)
break;
}

if (!lose) {
NextBlock = true;
print ("Next one");
= new Vector3 (-0.3f, mainCube.transform.localPosition.y,
= new Vector3 (0f, mainCube.transform.eulerAngles.y, 0f);

}

}

}

IEnumerator CanJump () {
while (!mainCube.GetComponent <Rigidbody> ())
yield return new WaitForSeconds (0.05f);
yield return new WaitForSeconds (1f);
nextBlock = true;

ЕкатеринаМалахова-рт
Автор

Гоша попробуй сделать игру где надо управлять бункером, городом .

wertyswertys
Автор

Привет. У меня проблема ;( Установил встроенные покупки на свою игру, но теперь из-за плагина Soomla у меня сломалась компиляция на Android. Что делать!?

BeetleInc
Автор

ставь скобки, даже если после оператора всего одна строка

vyacheslavmikhailov