IU.Button непрерывное нажатие

Общие вопросы о Unity3D

IU.Button непрерывное нажатие

Сообщение Antoniv2689 05 дек 2018, 20:11

есть спрайт (GameObject)

на нём висит скрипт
Синтаксис:
Используется csharp
public void Move()
    {
        transform.Translate(new Vector3(-0.05f, 0f, 0f));
    }


Кнопке Button.UI указываю на объект и на выполнения данного скрипта при нажатии. Но по сути получаю единовременно нажатие, а мне нужно как функция Update() пока кнопка нажата.
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35

Re: IU.Button непрерывное нажатие

Сообщение 1max1 05 дек 2018, 20:18

https://docs.unity3d.com/ScriptReferenc ... rDown.html
https://docs.unity3d.com/ScriptReferenc ... terUp.html
Реализовываешь метод OnOver и там транслитишь свой спрайт.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: IU.Button непрерывное нажатие

Сообщение Antoniv2689 05 дек 2018, 20:56

private void OnMouseDrag() надо реализовать аналог этой финкции - так вместо кнопок создавал спрайт и управлял им.
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35

Re: IU.Button непрерывное нажатие

Сообщение Antoniv2689 06 дек 2018, 10:40

в общем покопался в интернете. и нашел следующее решение: по мануалу но немного доработал под себя, убрал прыжки https://habr.com/post/264611/

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

public class GamerDvijenie : MonoBehaviour {

    public Rigidbody2D rb2d;
    public float playerSpeed;
    public int directionInput;
    public bool groundCheck;
    public bool facingRight = true;

    void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        if ((directionInput < 0) && (facingRight))
        {
            Flip();
        }

        if ((directionInput > 0) && (!facingRight))
        {
            Flip();
        }
        if (directionInput == 0)
        {
        }
        groundCheck = true;
    }

    void FixedUpdate()
    {
        rb2d.velocity = new Vector2(playerSpeed * directionInput, rb2d.velocity.y);
    }

    public void Move(int InputAxis)
    {

        directionInput = InputAxis;

    }
    void Flip()
    {
        facingRight = !facingRight;
        Vector3 theScale = transform.localScale;  - делает спрайт зеркальным при двежении в лево и в право соответсвенно, не нужно просто стираем
        theScale.x *= -1;                   - делает спрайт зеркальным при двежении в лево и в право соответсвенно если не нужно просто стираем
        transform.localScale = theScale;           - делает спрайт зеркальным при двежении в лево и в право соответсвенно если не нужно просто стираем
    }
}
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35


Вернуться в Общие вопросы

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

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