FC2ブログ
    09 «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.» 11

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】タップしている間の処理(長押し中の処理)はこうやればできますよね。これで●●ッピーバードも作れちゃうね! 

    コンニチハ バンナイデス。

    Unityの難しくない技術はハルシオンブログへ。
    「あぁこうやってやればいいのか、簡単じゃん」をモットーにやっております。

    「へぇ・・こうやるとできるんだ。でもちょっと良く分からないや…」っていう技術的に難しい話題は、ここでは扱いません(俺が理解できないものは記事にしません)


    ということで、本日は「タップしている間」のやり方をば。
    これ多分以前も書いたと思うんですが、最近また使う機会があったので再度書いちゃいます。

    とりあえず、こんな感じでハトを置いてみました。


    ボタンを離すと下降し、ボタンを押している間上昇するようなものを作ってみます。

    次にハトが動くためのコードをちゃちゃっと書きます。
    【Blog.cs】
    using UnityEngine;

    public class Blog : MonoBehaviour {

    public GameObject objHato;

    enum HATO_STATE {
    UP,
    DOWN,
    }
    HATO_STATE state = HATO_STATE.DOWN;

    /// <summary>
    /// 押した時の処理
    /// </summary>
    public void OnTapDown() {
    state = HATO_STATE.UP;
    }

    /// <summary>
    /// 離した時の処理
    /// </summary>
    public void OnTapUp() {
    state = HATO_STATE.DOWN;
    }

    private void FixedUpdate() {
    if(state == HATO_STATE.UP) {
    objHato.transform.Translate(0f,0.1f,0f);
    } else {
    objHato.transform.Translate(0f, -0.1f, 0f);
    }
    }
    }


    「押している間」というのは、「押してから離すまで」というわけで、OnTapDownが「押した時」、OnTapUpが「離した時」として処理しています。

    あとはボタンが押された時と離された時に上記の処理を呼んであげればいいわけです。

    では、押された時と離された時の設定をしてみましょう。

    始めはボタンとしてオブジェクトを作ったので、こんな感じになっています。



    しかし、ボタンコンポーネントには押された時、離された時という判断はできません。
    なぜならば、「ボタン」というのは、「ポチっと”押す”+”離す”」の一連の処理のことを指します。
    そのため、押す、離すのそれぞれの処理を捕まえようと思っている場合は、一度Buttonコンポーネントを外します。

    代わりに、「Event Trigger」コンポーネントを付けます。



    EventTriggerではドラッグを始めるや、押す、離すなどの処理を取ることができます。

    今回はEventTriggerのPinterDownにOnTapDownを、PinterUpにOnTapUpを指定します。


    これで完成!


    こんな感じでタップ中の処理を作ることができます。

    また、今回はボタンのようなものを準備しましたが、「画面のどこをタップしてもおk」という場合は、EventTriggerを使わない方法もあります。

    【Blog.cs】
    using UnityEngine;

    public class Blog : MonoBehaviour {

    public GameObject objHato;

    enum HATO_STATE {
    UP,
    DOWN,
    }
    HATO_STATE state = HATO_STATE.DOWN;

    /// <summary>
    /// 押した時の処理
    /// </summary>
    public void OnTapDown() {
    state = HATO_STATE.UP;
    }

    /// <summary>
    /// 離した時の処理
    /// </summary>
    public void OnTapUp() {
    state = HATO_STATE.DOWN;
    }

    private void Update() {
    if(Input.GetMouseButtonDown(0)) {
    OnTapDown();
    } else if(Input.GetMouseButtonUp(0)) {
    OnTapUp();
    }
    }

    private void FixedUpdate() {
    if(state == HATO_STATE.UP) {
    objHato.transform.Translate(0f,0.1f,0f);
    } else {
    objHato.transform.Translate(0f, -0.1f, 0f);
    }
    }
    }


    Update処理にあるInput.GetMouseButtonDownとGetMouseButtonUpが、「画面をタップしたとき」「画面から指を離した時」の処理になります。


    以上で本日の記事終わり!あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/509-b015c7ff
    この記事にトラックバックする(FC2ブログユーザー)