Skip to content

Instantly share code, notes, and snippets.

@IshidaGames
Created September 10, 2017 09:24
Show Gist options
  • Save IshidaGames/17d7c677d437b2cbd22166d1d6822b01 to your computer and use it in GitHub Desktop.
Save IshidaGames/17d7c677d437b2cbd22166d1d6822b01 to your computer and use it in GitHub Desktop.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//UI使う時は忘れずに!
using UnityEngine.UI;
public class Shot : MonoBehaviour {
public float thrust;
public Rigidbody rb;
bool setting1 = true;
bool setting2 = false;
public GameObject meter;
bool changeRotate;
float rotate;
float angle;
//SliderをInspectorに入れる空欄を作る
public Slider slider;
//lengthはSliderの長さに替えるための値を、forceはSliderの長さを力に変換した値を入れる変数
float length;
float force;
void Start () {
rb = GetComponent<Rigidbody>();
}
void Update () {
if (setting1)
{
Meter();
}
//setting2がtureになったら自動で起動
if (setting2)
{
//下部に記載したSlider関数を呼ぶ
Slider();
}
if (Input.GetMouseButtonDown(0))
{
if (setting1)
{
setting2 = true;
setting1 = false;
//setting2の時にクリックされると起動
}else if (setting2)
{
//Slider関数で決まった数値のforceを動かす力にする
rb.AddForce(transform.forward * force);
//発射される時に2つのUIを消す、meterはImageのUIを入れた空のオブジェクトなのでSliderと書き方違う
meter.SetActive(false);
slider.gameObject.SetActive(false);
setting2 = false;
}
}
}
void Meter()
{
if (0.1f >= meter.transform.eulerAngles.z)
{
changeRotate = true;
}
if (90 <= meter.transform.eulerAngles.z)
{
changeRotate = false;
}
if (changeRotate)
{
rotate = 1;
}
else
{
rotate = -1;
}
meter.transform.Rotate(0, 0, rotate);
angle = meter.transform.eulerAngles.z;
transform.rotation = Quaternion.Euler(angle * -1, 0, 0);
}
//Slider関数
void Slider()
{
//Update関数の中で起動している間はずっと足し続ける
length += 0.01f;
//lengthが1に達した時に0に戻る
if (length > 1)
{
length = 0;
}
//Sliderの長さの数値にlengthの数値を入れる
slider.value = length;
//force変数にlength変数に5000かけた数値を入れる
force = length * 5000;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment