Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 06.10.2017
Сообщений: 1
1

Создание чекпоинта для восстановления игрока

24.08.2018, 13:36. Просмотров 1922. Ответов 2

здравствуйте я начал недавно создавать 2Dигру и столкнулся с проблемой по созданию чекпоинта, чтоб когда игрок погибал он возвращался бы на точку сохранения. Написал 2 кода вот они
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
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class restart : MonoBehaviour
{
 
    public Transform spawnpoint;
    public GameObject spawn;
    public bool die;
    public GameObject Plaer;
    private void Start()
    {
        spawnpoint = spawn.GetComponent<savepoint>().spawnpoint;
    }
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            SceneManager.LoadScene(SceneManager.GetSceneAt(0).name);
            GameObject[] list = GameObject.FindGameObjectsWithTag("Player");
            int i = list.Length;
            while (--i >= 0)
            {
                GameObject obj = list[i];
                // удалить obj 
                Instantiate(Plaer ,spawnpoint);
            }
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class savepoint : MonoBehaviour
{
    public Vector3 spawnpoint;
    public bool spawn = false;
 
 
    public void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            spawn = true;
            spawnpoint = this.gameObject.transform.position;
        }
    }
}
первый код для килзоны там игрок помирает во втором мы запоминаем координаты чекпоинта.
что не так. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2018, 13:36
Ответы с готовыми решениями:

Для данных значений m, n и известной ставки каждого игрока определить номер игрока, который выиграл и сумму выигрыша
За круглым столом собралось n игроков (n &lt;= 255). Каждый сделал ставку в k монет (1 &lt;= k &lt;= 5)....

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

Создание игрока Network Manager
Как мне правильней всего создать игрока? Хочу при создании, давать ему нужные переменные. ...

Создание предметов меняющих внешний вид игрока
Я хочу создать предметы, которые игрок сможет на себя одеть, взять в руки и т.п. Для них стоит...

2
34 / 30 / 8
Регистрация: 22.02.2017
Сообщений: 404
24.08.2018, 18:49 2
В скрипте restart вы получаете в старте spawnpoint из скрипта savepoint, а когда savepoint.OnTriggerEnter2D выполняется и присваивает новый spawnpoint в скрипте savepoint, restart его не получает, так как получение происходит в старте, а старт выполняется один раз, при запуске игры.

Можно поступить так(savepoint.cs):
C#
1
2
3
4
5
6
7
8
9
10
public void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            spawn = true;
            //spawnpoint = this.gameObject.transform.position;
            restart _restart = other.GetComponent<restart>();
            restart.spawnpoint = gameObject.transform.position;
        }
    }
(restart.cs):
C#
1
2
3
4
5
6
private Transform spawnpoint;
public Transform Spawnpoint
{
    get { return spawnpoint; }
    set { spawnpoint = value; }
}
P.S. Если есть ошибки, сорри, писал ручками.
0
0 / 0 / 0
Регистрация: 07.09.2020
Сообщений: 1
18.01.2021, 21:46 3
Здравствуйте, у меня была такая проблема (я хотел менять координаты чекпоинта на координаты игрока при нажатии на кнопку "S").
Иногда стоит смотреть на вещи немного с другой стороны.
Мое решение: не пытайтесь "пододвинуть" чекпоинт к игроку скриптом, висящим на нем(на игроке). гораздо проще будет повесить скрипт со сменой координат на сам чекпоинт, но при этом нужно сделать примерно так:
C#
1
public playerControl player;
и на том скрипте на public окно прицепить самого игрока.
а за тем мы просто изменяем координаты чекпоинта (от него самого, а не через игрока) на координаты игрока!
C#
1
transform.position = new Vector3(player.transform.position.x, player.transform.position.y);
и всё!

а вот так как у меня (по нажатию на кнопку "S"). вся Update функция
C#
1
2
3
4
5
6
7
void FixedUpdate()
    {
        if (Input.GetKey(KeyCode.S) && pc.isGround)
        {
            transform.position = new Vector3(pc.transform.position.x, pc.transform.position.y, pc.transform.position.z - 1);
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2021, 21:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Краш при создании чекпоинта: найти и исправить ошибки в коде
RPC_CALLBACK CRPCCallback::SetPlayerCheckpointEx(RPC_ARGS) { CVector pos; float size;...

создание диска восстановления
Купил ноутбук HP с Windows vista Premium Home запустил программу Recovery manager для создания...

Создание собственного раздела восстановления
Доброго времени суток. Имеется ноутбук(Acer Aspire V5-571G), обновился до Win10, потом...

Создание точек восстановления на несистемном диске
Привет всем! Помогите, плиз, понять одну вещь. Под создании точек восстановления 7-ка позволяет...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.