Unityで3D空間を自由に移動できるようにする2

前回まででサイコロの横にボタンを配置することができました。
今回はボタンを押すとサイコロを右に移動させたいと思います。

勝手に前進するようにしてたので
スタート関数で0にして歩かせないようにする。
//——————————————————
void Start () {
power = 0.0f;
}
//——————————————————

右に移動させる関数を書く。
前進のときはtransform.forwardだったので
そこをtransform.rightにすれば良いのだろう。
//——————————————————
//右移動
public void RightButton()
{
power = 50.0f;
float walkSpeed = Mathf.Abs(this.GetComponent().velocity.x);
if (walkSpeed < this.maxSpeed) { this.GetComponent().AddForce(transform.right * 1 * this.power);
}
}
//——————————————————


書けたら保存してボタンと関数を接続して実行。
ボタンを押すと一瞬右に動くけどそれでおしまい。
また押しっぱなしを検知していない。

ボタンの押しっぱなしを検知する方法は
シューティングゲームの時にやったのでそれを使おう。

押しっぱなし検知の記事

//————————————————————-
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SaikoroMover : MonoBehaviour {

float power = 50.0f; //サイコロを動かすのに加える力。パワー。
float maxSpeed = 7.0f; //最高速度を指定して速度制限。これをしないとずっと加速し続ける。
bool Rnow = false;

// Use this for initialization
void Start () {
power = 0.0f;
}

// Update is called once per frame
void Update () {
if (Rnow == true)
{
power = 50.0f; //サイコロを動かすのに加える力。パワー。
float walkSpeed = Mathf.Abs(this.GetComponent().velocity.x); //歩く速度を計測。

if (walkSpeed < this.maxSpeed) //歩く速度(walkSpeed)が最高速度(maxSpeed)を超えないなら力を加えて加速させる。 { this.GetComponent().AddForce(transform.right * 1 * this.power);
}
}
}

//右移動
public void RightButton()
{
power = 50.0f; //サイコロを動かすのに加える力。パワー。
float walkSpeed = Mathf.Abs(this.GetComponent().velocity.x); //歩く速度を計測。

if (walkSpeed < this.maxSpeed) //歩く速度(walkSpeed)が最高速度(maxSpeed)を超えないなら力を加えて加速させる。 { this.GetComponent().AddForce(transform.right * 1 * this.power);
}
}

//Rボタン押した
public void Rosita()
{
Rnow = true;
}

//Rボタン離した
public void Rhanasita()
{
Rnow = false;
this.GetComponent().velocity = Vector3.zero; //停止させる命令

}
}
//————————————————————-


これでサイコロがスムーズに右に移動
できるようになったぞ^^v

後はボタンの位置と大きさを調整して
左、前、後ろ移動用のボタンを作ればいけそうですな。^0^

ボタンのSourceImageも半透明にすると見やすいかも。

とりあえず今回はこれでおしまい~ 

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



コメントを残す

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