Unityでシューティングゲームの自機をボタンで動かす

スマホで操作できるようにボタンを作ります。

ボタンを押すと前後左右に自機を動かせるようにします。

1.
ボタンの画像を作ってプロジェクトビューにD&Dして登録。

2.
ヒエラルキービューで右クリック→create→UI→Button
名前を Lmove にしました。
▼をクリックして Textを削除。ボタンに文字を表示するときに使うみたい。

3.
Lmoveを選択してインスペクタビューの
PosX -140
PosY 100
Width 40
Height 40
アンカーを画面右下に設定

4.
Lmoveを選択して右クリック→Duplicate でコピーする。
名前を Rmove に変更。
PosX PosYとか位置調整する。
同じように上ボタンと下ボタンも Umove,Dmoveという名前で作成。

5.
自機の動きを記述したC#scriptのshipmoveをダブルクリックで開いて
ボタンを押した時の動きを記述する。
start関数の下に書き込んでいく。
最初update関数内に書いちゃって後で関数が見つからずに苦しみました。

void Start () {
}

//左移動
public void LeftButton() {
this.sx = -0.1f;
transform.Translate (this.sx, 0, 0);
}

//右移動
public void RightButton() {
this.sx = 0.1f;
transform.Translate (this.sx, 0, 0);
}

//上移動
public void UpButton() {
this.sy = 0.1f;
transform.Translate (0, this.sy, 0);
}

//下移動
//public void Upush() {
public void DownButton() {
this.sy = -0.1f;
transform.Translate (0, this.sy, 0);
}

6.
ボタンオブジェクトに関数を登録していく。
Lmoveを選択してインスペクタビューの下の方の
On Click()
List is Empty
って書かれている欄の 『+』をクリック。

7.
Noneって書いてる欄に左のヒエラルキービューからship1をD&Dして
関数に接続できるようにする。

8.
No fanctionってところをクリック →shipmove →LeftButton で接続完了。

step5でupdate関数内にLeftButton関数を書いたらここで見つからずに困り果てる。

9.
とりあえず左ボタンだけ機能するか実行して確かめてみる。

左ボタンを押すと自機が0.1f 左に動く!
しかし!
押しっぱなしを検知していないようで1回だけしか動かない。
連続して左に動かすにはボタンを連打しないといけないぞ・・・。
これはダメだなー ^^;

次回はボタンを押しっぱなしで自機がスムーズに動くように何か策を考えたい!

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

public class shipmove : MonoBehaviour {

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

// Use this for initialization
void Start () {
}

//左移動
public void LeftButton() {
this.sx = -0.1f;
transform.Translate (this.sx, 0, 0);
}

//右移動
public void RightButton() {
this.sx = 0.1f;
transform.Translate (this.sx, 0, 0);
}

//上移動
public void UpButton() {
this.sy = 0.1f;
transform.Translate (0, this.sy, 0);
}

//下移動
public void DownButton() {
this.sy = -0.1f;
transform.Translate (0, this.sy, 0);
}

void Update () {
}

}

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



コメントを残す

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