LoginSignup
17
17

More than 5 years have passed since last update.

[Unity 5] uGUIのボタンを長押ししてプレイヤーを操作したい [C#]

Last updated at Posted at 2015-09-10

ずっと導入したかった「uGUIのボタン長押し」の動作の方法が分かったからメモ。
「ボタンにOnclick()以外の動作をさせたい」という思考に至るまでが難しかった。


ボタン、いつもの「Button(Script)」→「OnClick()」とは別に、
「Event Trigger」を使うと、他にもいろいろな動作をきっかけにvoidを使わせることができる。

Hierarghy

Canvasに「right」と「left」というButtonを作成。
スクリプトは「GameCenter」という空のオブジェクトに貼ってます。
alt

Event Triggerのつけ方

「Add Component」から「Event」→「Event Trigger」を選択

Triggerの種類

画像見てください。
alt
「PointerDown」と「PointerUp」はもう使ってるから灰色文字になってるけど、ちゃんと使えます。
つけたら、こんな感じになります(画像はすでにスクリプト設定済み)。
alt

スクリプトの中身

概要
1. ボタンの押すとboolをtrueにする
2. trueの間、毎フレームなにかしらの動作をさせる
3. ボタンを離すとboolがfalseになって動作が止まる
こんな感じ?

で、書いたコードがこちら。

right.cs
using UnityEngine;
using System.Collections;

public class right : MonoBehaviour {

    public GameObject player;
    bool now = false;

//2.の部分
    void Update(){
        if (now == true) {
            Vector3 Qpos = player.transform.localPosition;
            Qpos.x += (1.0f * Time.deltaTime);
            if(Qpos.x > 2.73f){Qpos.x = 2.73f;}
            player.transform.localPosition = Qpos;
        }
    }

//1.の部分
    public void OnRD(){
        now = true;
    }

//3.の部分
    public void OnRU(){
            now = false;
    }

1.に該当するのが void OnRD()。RightDownの略。
3.に該当するのが void OnRu()。RightUpの略。
ボタンでこのvoidを利用するには必ず publicでなければなりませんよ(よく忘れて焦る)。

2.の部分。
私はボタンを長押ししている間にプレイヤーを左右に動かしたいので、
ベクターにlocalPositionを代入

その中のxを計算させる(右端まで行ったら止まるように、右端の数値を入れる)

localPositionに変更したベクターを代入
と書いてズイズイッと右に動いてもらってます。

加算分にTime.deltaTimeを掛けることで、
フレームレートに左右されず一秒で1.0f動きます。
加減は適当に……。まだ遅い気がする。

ボタンにセッティングする

これはOnClick()と一緒。

  1. 右下の+を押す
  2. スクリプトを貼ったオブジェクトを選択
  3. No Function→スクリプト(今回はright)→動かしたいVoid(OnRDとかOnRU)

こうすれば、ボタンをクリックしている間は右に動いて、離すと止まる。
設定が終わると上の方にある画像みたいになりますよ。

ゲームビューで動かしてみる

うごいた。


デキタヨー!! (˘ω˘)
左向きは、左向き用に同じようにスクリプト書いて貼ってください。

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17