0 / 0 / 0
Регистрация: 19.02.2020
Сообщений: 2
1

Как сделать переход на следующий уровень? Unity 2D

20.02.2020, 19:11. Показов 13673. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, подскажите пожалуйста как сделать переход на следующий уровень (сцену) в Unity 2D.
К примеру герой проходит уровень, доходит до объекта (финиш) и сразу переходит на следующий уровень(сцену)
Я совсем новичек и запуталась какой нужен код и куда его вставить в Character.
Код Character прикрепляю. Извините если что не так)))

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using UnityEngine;
using System.Collections;
 
public class Character : Unit
{
[SerializeField]
private int lives = 5;
 
public int Lives
{
    get { return lives; }
    set
    {
       if (value < 5) lives = value;
        livesBar.Refresh();
    }
}
private LivesBar livesBar;
 
[SerializeField]
private float speed = 3.0F;
[SerializeField]
private float jumpForce = 15.0F;
 
private bool isGrounded = false;
 
private Bullet bullet;
 
private CharState State
{
    get { return (CharState)animator.GetInteger("State"); }
    set { animator.SetInteger("State", (int)value); }
}
 
new private Rigidbody2D rigidbody;
private Animator animator;
private SpriteRenderer sprite;
 
private void Awake()
{
    livesBar = FindObjectOfType<LivesBar>();
    rigidbody = GetComponent<Rigidbody2D>();
    animator = GetComponent<Animator>();
    sprite = GetComponentInChildren<SpriteRenderer>();
 
    bullet = Resources.Load<Bullet>("Bullet");
}
 
private void FixedUpdate()
{
    CheckGround();
}
 
private void Update()
{
    if (isGrounded) State = CharState.Idle;
 
    if (Input.GetButtonDown("Fire1")) Shoot();
    if (Input.GetButton("Horizontal")) Run();
    if (isGrounded && Input.GetButtonDown("Jump")) Jump();
}
 
private void Run()
{
    Vector3 direction = transform.right * Input.GetAxis("Horizontal");
 
    transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
 
    sprite.flipX = direction.x < 0.0F;
 
    if (isGrounded) State = CharState.Run;
}
 
private void Jump()
{
    rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
}
 
private void Shoot()
{
    Vector3 position = transform.position; position.y += 0.8F;
    Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
 
    newBullet.Parent = gameObject;
    newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);
}
 
public override void ReceiveDamage()
{
    Lives--;
 
    rigidbody.velocity = Vector3.zero;
    rigidbody.AddForce(transform.up * 8.0F, ForceMode2D.Impulse);
 
    Debug.Log(lives);
}
 
private void CheckGround()
{
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);
 
    isGrounded = colliders.Length > 1;
 
    if (!isGrounded) State = CharState.Jump;
}
 
private void OnTriggerEnter2D(Collider2D collider)
{
 
    Bullet bullet = collider.gameObject.GetComponent<Bullet>();
    if (bullet && bullet.Parent != gameObject)
    {
        ReceiveDamage();
    }
}
}
 
public enum CharState
{
Idle,
Run,
Jump
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2020, 19:11
Ответы с готовыми решениями:

Переход на следующий уровень
Добрый день! Подскажите как решить следующую задачу. создаю игру из нескольких уровней. Игрок...

Программа для тестирования. Как сделать переход на следующий вопрос
//Создать программу тестирования: пользователю на форме предлагается вопрос и //4е варианта...

Сделать переход на следующий учебный год
Как сделать переход на следующий учебный год(чтобы к примеру 2 класс стал 3 и так далее, а 11 чтоб...

Как сделать чтобы уровень змейки и уровень яблока совпадал?
Здравствуйте. Как сделать чтобы уровень змейки и уровень яблока совпадал?

5
4 / 1 / 3
Регистрация: 07.02.2020
Сообщений: 93
20.02.2020, 19:31 2
Например можно так:
C#
1
2
3
4
5
6
7
void OnTriggerEnter2D(Collider2D other)
    {         
        if (other.tag == "NextLvl") 
        {            
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex +1);
        }
    }
Как пример) Что то не понятно спрашивай)
1
0 / 0 / 0
Регистрация: 19.02.2020
Сообщений: 2
20.02.2020, 22:53  [ТС] 3
Я пыталась, но к сожалению выдавало ошибки. Возможно я не туда вписала или что то еще.
  1. Assets\Scripts\Character.cs(118,36): error CS0103: The name 'SceneManager' does not exist in the current context
  2. Assets\Scripts\Character.cs(116,13): error CS0103: The name 'other' does not exist in the current context
  3. Assets\Scripts\Character.cs(115,18): error CS0111: Type 'Character' already defines a member called 'OnTriggerEnter2D' with the same parameter types
0
296 / 217 / 86
Регистрация: 17.02.2016
Сообщений: 1,276
Записей в блоге: 1
20.02.2020, 23:24 4
Цитата Сообщение от Anna_90 Посмотреть сообщение
The name 'SceneManager' does not exist in the current context
нехватает юзинга
Цитата Сообщение от Anna_90 Посмотреть сообщение
Type 'Character' already defines a member called 'OnTriggerEnter2D' with the same parameter types
это означает что у тебя уже есть метод с таким названием
0
4 / 1 / 3
Регистрация: 07.02.2020
Сообщений: 93
20.02.2020, 23:37 5
Сверху в код нужно добавить:
C#
1
using UnityEngine.SceneManagement;
А то что я написал, нужно вставить в твой код в уже имеющийся метод
Цитата Сообщение от Anna_90 Посмотреть сообщение
private void OnTriggerEnter2D(Collider2D collider)
P.S только не уверен что будет работать т.к. у меня настроено так что этот код например на персонаже и когда его колайдер сталкивается с другим под тегом "NextLvl" соответственно тригерит эту функцию. Ты можешь использовать как то по другому я показал просто пример как можно сделать.
0
29 / 19 / 10
Регистрация: 24.02.2015
Сообщений: 124
22.02.2020, 12:25 6
Не забудь добавить сцены в билд
0
22.02.2020, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2020, 12:25
Помогаю со студенческими работами здесь

Как реализовать систему нашёл предмет=можешь переходить на следующий уровень?
Здравствуйте, друзья. Хочу в 2д платформере сделать сделать простую систему, в которой что-бы можно...

Не переходит на следующий уровень
Привет,столкнулся с проблемой вот код для перехода на следующий уровень игрока $bigl=50;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru