単二電池

unityで以下のC#プログラムをどう組み立てていいのかわからず質問いたしました。みなさまの知恵をお貸しください。

今現在↓のプログラムで実現できている段階が、PC上のキーボード(Vキー)を押し続けている間はキャラクターがboost機能を使えるというものです。(これによりキャラの動きが速くなったりします)

ただずっとVキーを押しつづけるのは正直めんどくさいので、これを、Vキーを一度押すだけでboostPoint(エネルギータンク)がなくなるまではboost機能がずっと発動し続け、また途中でやめたい場合は同じVキーを押すとそこでboost機能を停止できるというプログラムを実現したいと思っています。
※別にVキーにこだわっているわけではないので他の方法で実現できるならそれでもOKです。

3日ほど悩んで1人では解決できないと思い投稿いたしました。C#とunity歴はまだ3週間ほどで知識もまだまだでC#に変な所があるかもしれませんがご教授宜しくお願いします。

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

public class CharactorController : MonoBehaviour
{
public int boostPoint;
int boostPointMax = 2000;
public float speed = 3.0f;
public float gravity = 9.81f;

//Sliderを入れる
public Text bpText;

//Sliderを入れる
public Slider slider;

private Vector3 moveDirection = Vector3.zero;

CharacterController controller;

void Start()
{
controller = GetComponent<CharacterController>();

//Sliderをスタート時に満タンにする
slider.value = 1;

//boostPointをスタート時に満タンにする
boostPoint = boostPointMax;

}

void Update()
{

if (controller.isGrounded)
{
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;

if (Input.GetKey(KeyCode.Space))
{
moveDirection.y = 5; //ジャンプするベクトルの代入
}

if (Input.GetKey(KeyCode.V) && boostPoint > 0)
{
moveDirection.x *= 3;

boostPoint -= 4;

slider.value = (float)boostPoint / (float)boostPointMax;
}

}

if (Input.GetKey(KeyCode.V) == false)//Vキーが押されていない場合はブーストポイントに+1づつ与え回復させる
{

boostPoint += 1;

slider.value = (float)boostPoint / (float)boostPointMax;
}

boostPoint = Mathf.Clamp(boostPoint, 0, boostPointMax);//Mathf.Clampでブーストポイントの残量を現在のboostPointへ代入する

moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);

//現在の体力と最大体力をUIに表示
bpText.text = string.Format("{0:000} / {1:000}", boostPoint, boostPointMax);
}


}

A 回答 (1件)

「boost機能」を使っているかどうかを表す変数があればいいのでは.

    • good
    • 0
この回答へのお礼

回答ありがとうございます。色々と試しながらやってみたらできました。

お礼日時:2020/05/14 11:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!