Создание кнопок для управления персонажем

Графический интерфейс пользователя

Создание кнопок для управления персонажем

Сообщение kolhoz 15 авг 2018, 14:45

Здравствуйте.. Пытаюсь написать игру жанра платформер по видуокрокам. Игра 2D.. По уроку с сайта ITVDN получилось создать саму сцену, персонажа, его анимацию и управление им. Но дело в том, что я бы хотел сделать на сцене кнопки и чтобы управление персонажем происходило через UI кнопки. Для чего я добавил на сцену три кнопки и добавил к ним компонент Event Trigger и события PointerDown и PointerUp, но реализовать движение вперед, назад и прыжок по нажатию на них у меня не получается.. Сейчас вот такой скрипт у меня. Как его изменить, чтобы управление работало не стрелками на клавиатуре, а кнопками на самой сцене?

Синтаксис:
Используется csharp
public class Character : MonoBehaviour {
       
        [SerializeField]
        private int lives = 5; //кол-во жизней
       
        [SerializeField]
        private float speed = 3.0F; //Скорость игрока
       
        [SerializeField]
        private float jumpForce = 15.0F; //сила прыжка
       
        new private Rigidbody2D rigidbody;
        private Animator animator;
        private SpriteRenderer sprite;
       
        private bool isGrounded = false;
       
        private PlayerState2 State {
                get {
                        return (PlayerState2) animator.GetInteger("State");
                }
               
                set {
                        animator.SetInteger("State", (int) value);
                }
        }
       
        private void Awake() {
                rigidbody = GetComponent<Rigidbody2D>();
                animator = GetComponent<Animator>();
                sprite = GetComponentInChildren<SpriteRenderer>();
        }

        private void FixedUpdate() {
                CheckGround();
        }
       
        void Update () {
               
                if (isGrounded) {
                        State = PlayerState2.Idle;
                }
               
                if (Input.GetButton("Horizontal")) {
                        Run();
                }
               
                if (isGrounded && Input.GetButtonDown("Vertical")) {
                        Jump();
                }
        }
       
        public void Logs() {
                Debug.Log("Hello!");
                Vector3 direction = transform.right * Input.GetAxis("Horizontal");
                sprite.flipX = direction.x < 0.0F;
        }
       
        public 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 = PlayerState2.Run;
                }
        }
       
        public void Jump() {
                rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
        }
       
        private void CheckGround() {
                Collider2D[] collides = Physics2D.OverlapCircleAll(transform.position, 0.3F);
               
                isGrounded = collides.Length > 1;
               
                if (!isGrounded) {
                        State = PlayerState2.Jump;
                }
        }
}

public enum PlayerState2 {
        Idle,
        Run,
        Jump
}
kolhoz
UNец
 
Сообщения: 1
Зарегистрирован: 15 авг 2018, 14:39

Re: Создание кнопок для управления персонажем

Сообщение DimaJoke 22 авг 2018, 16:49

То есть.. Ты делаешь 2Д игру на андроид\IOS, и ты хочешь сделать управление кнопками?
Что бы повзрослеть, человек должен преодолеть ошибки юности.

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: Создание кнопок для управления персонажем

Сообщение DimaJoke 22 авг 2018, 17:09

В-Общем. надеюсь ты не потерял надежды на ответ на этом форуме)
я просто поделюсь своей идеей, которую я ещё не использовал в своём проекте, но буду.
Итак. Вынесем это в отдельный скрипт.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Example : MonoBehaviour {
public bool StartUp;
public float SpeedMove = 20f;

public void Up()
{
        if(StartUp == true)
        {
                StartUp = false;
        }
        else if(StartUp == false)
        {
                StartUp = true;
        }
}

void Update()
{
        if(StartUp == true)
        {
                transform.position += transform.up * SpeedMove * Time.deltaTime;
        }
}

}

 

Но есть пара "-"
1) нажал на кнопки-идёт. что бы остановить надо нажать ещё раз...
2)возможно даже не остановится ( скрипт написал на скорую руку, да и в голове была только вот эта основа).
Но, думаю, я натолкнул на мысль, и вы дальше продолжите сами.
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт

Re: Создание кнопок для управления персонажем

Сообщение kezin636 22 авг 2018, 22:05

Чувак, не заморачивайся! Воспользуйся готовыми контроллерами от юнити в Standard Assets! Берешь, импортируешь CrossPlatformInput, затем заходишь в папку Standard Assets/CrossPlatformInput/Prefabs и перетаскивает нужный тебе префаб.
kezin636
UNIт
 
Сообщения: 83
Зарегистрирован: 11 июн 2018, 19:28

Re: Создание кнопок для управления персонажем

Сообщение kezin636 22 авг 2018, 22:07

При этом управление будет и кнопками и экранными... Ну в общем, что выберешь.
kezin636
UNIт
 
Сообщения: 83
Зарегистрирован: 11 июн 2018, 19:28

Re: Создание кнопок для управления персонажем

Сообщение DimaJoke 23 авг 2018, 06:49

kezin636 писал(а):Чувак, не заморачивайся! Воспользуйся готовыми контроллерами от юнити в Standard Assets! Берешь, импортируешь CrossPlatformInput, затем заходишь в папку Standard Assets/CrossPlatformInput/Prefabs и перетаскивает нужный тебе префаб.

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

Поэтому я снова здесь..
Аватара пользователя
DimaJoke
UNITрон
 
Сообщения: 293
Зарегистрирован: 12 авг 2018, 18:59
Откуда: Ульяновск
  • Сайт


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1