Unityでボタンの押しっぱなしを検知する

前回はシューティングゲームにボタンを配置して
プレイヤーが動かせるようにしましたが
ボタンを押しても一マスしか動かせず。

今回はボタンを押している間は自機が動くようにしたい!
→ Event Trigger というのを使うと出来そう?

1.
インスペクタビューの下のAdd Component → Event → Event Trigger

2.
Add New Event Type → PointerDown を選択
Add New Event Type → PointerUP を選択

3.
スクリプト shipmoveにボタンを押しているときと離しているときを検知する関数を書く。
最初にEvent Trigger用 bool型変数を宣言しておく。

bool Lnow = false;

Lぼたんが押されると Lnow = true になる。
Lボタンが離されると Lnow = false になる。
ゲーム開始時はボタンが離されているから bool Lnow = false;

4.
次にstart関数の下にボタンを押したときに呼び出される関数を書く。
押したら Losita 関数
離したら Lhanasita 関数

void Start () {
}

//Lボタン押した
public void Losita()
{
Lnow = true;
}

//Lボタン離した
public void Lhanasita()
{
Lnow = false;
}

5.
update関数内に 
Lボタンが押されている (Lnow = treu) の時
自機を 0.1f 左に移動させる処理を書く。

void Update () {
if (Lnow == true) {
this.sx = -0.1f;
transform.Translate (this.sx, 0, 0);
}
}

6.
インスペクタービューのPointer Downの + をクリック。
Noneって欄にヒエラルキービューからship1をD&D。
関数にアクセスできるようにする。

7.
No Function → shipmove → Losita
Pointer Downは押したことを検知するから Losita関数を選択。

8.
同様に Pointer Up に離したときの Lhanasita関数を接続。

インスペクタービューのPointer upの + をクリック。
Noneって欄にヒエラルキービューからship1をD&D。
No Function → shipmove → Lhanasita

9.
さあ実行してみよう!

やったー ^0^
ボタンを押している間、スムーズに左に移動できている!

//////////////////////////////////////////////////////////////////////////

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//using UnityEngine.UI;

public class shipmove : MonoBehaviour {

float sx = 0; //x方向移動量を入れる変数
float sy = 0; //y方向移動量を入れる変数

bool Lnow = false; //Event Trigger用 bool型変数。 Lボタンが押されているかどうかを検知

void Start () {
}

//Lボタン押した
public void Losita()
{
Lnow = true;
}

//Lボタン離した
public void Lhanasita()
{
Lnow = false;
}

void Update () {
//左移動
if (Lnow == true) {
this.sx = -0.1f;
transform.Translate (this.sx, 0, 0);
}
}
}

////////////////////////////////////////
ー広告ー



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です