ボタンセレクト(C#)
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Linq; public class ButtonSelectTitle : MonoBehaviour { string[] selectGameTitle = { //遷移するシーン名を初期値として配列に "", //番号を合わせるための空要素 "NovelGameTitle", //ノベルゲーム予定 "CoinGameTitle", //コインを取得するゲーム "GiftyChan_Title" //お金を交番に届けるゲーム }; static int[] selectGameFlag = { 0, 0, 0, 0 }; //クリア判定のための配列(最初の要素は番号を合わせるための空要素) int numbers; float step_time; void Start() { // Debug.Log("Start"); // Debug.Log(selectGameFlag.Sum()); numbers = 0; step_time = 0.0f; //経過時間初期化 if (selectGameFlag.Sum() >= 3) { //それぞれのゲーム全てからタイトルに戻ってきたら Debug.Log("ALL GamePlaying!!!"); for (int i = 0; i < selectGameFlag.Length; i++) { //初期値を0にリセット selectGameFlag[i] = 0; } SceneManager.LoadScene("AllPlaying"); //クリアシーンへ遷移 } } void Update() { if (numbers>0) { Debug.Log("Update:numbers" + numbers); //経過時間をカウント step_time += Time.deltaTime; if (step_time >= 1.0f) { SceneManager.LoadScene(selectGameTitle[numbers]); } } } //Buttonにnumberを割り振ってnumberを元にselectGameTitleのインデックスとして各ゲームシーンに遷移 public void OnClick(int number) { // Debug.Log(number); if(numbers==0){ if (selectGameTitle[number] != "") { selectGameFlag[number] = 1; numbers = number; } } } }↑TOP↑
-Coinゲーム-
コイン生成(C#)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Coin : MonoBehaviour { public const int coinsNums=300; public GameObject coinPrefab; public float speed; //public static Renderer targetRenderer; // Start is called before the first frame update void Start() { for (int i = 0; i < coinsNums;i++){ createCoin(); } //targetRenderer = GetComponent↑TOP↑(); } void Update(){ } void createCoin(){ GameObject coin = Instantiate(coinPrefab) as GameObject; coin.transform.position = new Vector2(Random.Range(8.0f, 80.0f), Random.Range(-2.0f, 3.9f)); } }
Unityちゃんを動かす(C#)
using System.Collections; using System.Collections.Generic; using UnityEngine; public class UnityChController : MonoBehaviour { Rigidbody2D rb2d; Animator animator; float angle; bool isDead; public float maxHeight; public float swimVelocity; public float relativeVelocityX; public GameObject sprite; public bool IsDead(){ return isDead; } void Awake(){ rb2d = GetComponent↑TOP↑(); animator = sprite.GetComponent (); //アニメーターのswimフラグをtrueにする animator.SetBool("swim", true); } // Update is called once per frame void Update() { if((Input.GetButtonDown("Jump") && transform.position.y < maxHeight) || (Input.GetButtonDown("Fire1") && transform.position.y < maxHeight)){ //入力の判定 Swim(); } // if(Input.GetButtonDown("Fire1") && transform.position.y < maxHeight){ // Swim(); // } //角度を反映 //ApplyAngle(); } public void Swim(){ //死んだら泳げない if(isDead){ return; } if(rb2d.isKinematic){ return; } rb2d.velocity = new Vector2(0.0f, swimVelocity); //速度の操作 } /* void ApplyAngle(){ //現在の速度、相対速度から進んでいる角度を求める float targetAngle = Mathf.Atan2(rb2d.velocity.y, relativeVelocityX) * Mathf.Rad2Deg; //ベクトルから角度の計算 //回転アニメをスムージング angle = Mathf.Lerp(angle, -targetAngle, Time.deltaTime * 10.0f); //Rotationの反映 sprite.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, angle); } */ void OnCollisionEnter2D(Collision2D collision){ //コリジョンによる死亡判定 if(isDead){ return; } //何かにぶつかったら死亡フラグを立てる isDead = true; animator.SetBool("swim", false); //Debug.Log("swim:false"); } public void SetSteerActive(bool active){ rb2d.isKinematic = !active; } }
-Runゲーム-
ゲームコントローラー(C#)
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class GiftyGameController : MonoBehaviour { PlayerRun2D Unitychan2DRun; PlayerJump2D Unitychan2DJump; public GameObject unitychan; public GameObject startUnitychan; public GameObject clearUnitychan; public Text moneyLabel; public Text timeLabel; public Text stateLabel; public DateTime startDateTime; //スタート時のDateTime構造体 public TimeSpan totalTime; //時間経過のTimeSpan構造体 public DateTime readyStartDateTime; //Ready用 public TimeSpan readyTotalTime; //Ready用 public static int oldCountDown; //CountDown用 public static bool isClear; //ClearPointにきてるか判定するために public static TimeSpan[] scoreTimes = { new TimeSpan(0, 59, 59), new TimeSpan(0, 59, 59), new TimeSpan(0, 59, 59), new TimeSpan(0, 59, 59) }; //時間のハイスコア用 public static int[] scoreMoneys = { 0, 0, 0, 0 }; //取得金額のハイスコア用 //List ghost=new List↑TOP↑>(); //ゴースト用のlist static int f; //フレームのカウント GameObject Voice; AudioSource startVoice; GameObject bgm; AudioSource gameBGM; enum State { Ready, Play, Clear } State state; // Start is called before the first frame update void Start() { Debug.Log("Strat() --------------------------------"); } void Awake() { Voice = GameObject.FindGameObjectWithTag("StartVoice"); startVoice=Voice.GetComponent
(); bgm = GameObject.FindGameObjectWithTag("BGM"); gameBGM = bgm.GetComponent (); Debug.Log("Awake()"); Ready(); } // Update is called once per frame void Update() { Debug.Log("state:" + state); switch (state) { case State.Ready: //現在のDateTimeから初期のDateTimeを計算し経過した時間を計算する readyTotalTime = DateTime.Now - readyStartDateTime; int countDown = (3 - readyTotalTime.Seconds); if (countDown != oldCountDown) { oldCountDown = countDown; //TimeSpan構造体のプロパティで秒をテキストにいれる stateLabel.text = countDown.ToString("0"); } if (countDown == 0) { stateLabel.text = "届けて!!\nUnityちゃん!!"; Debug.Log(stateLabel.text); GameStart(); } break; case State.Play: //現在のDateTimeから初期のDateTimeを計算し経過した時間を計算する totalTime = DateTime.Now - startDateTime; //TimeSpan構造体のプロパティで分と秒をテキストにいれる timeLabel.text = totalTime.Minutes.ToString("00") + ":" + totalTime.Seconds.ToString("00") + "." + totalTime.Milliseconds.ToString("000"); if (isClear == true) { Clear(); } break; case State.Clear: if (Input.GetButtonDown("Fire1")) { Reload(); } else{ Invoke("Reload", 5f); } break; } moneyLabel.text = string.Format("{0:#,0}円", Money.moneyCount); //GhostRecording(); } void Ready() { Debug.Log("Ready()"); state = State.Ready; isClear = false; startUnitychan.SetActive(true); unitychan.SetActive(false); clearUnitychan.SetActive(false); Money.moneyCount = 0; moneyLabel.text = string.Format("{0:#,0}円", 0); timeLabel.text = "00:00.000"; readyStartDateTime = DateTime.Now; oldCountDown = 0; } void GameStart() { startVoice.Play(); gameBGM.time = 10f; Debug.Log("GameStart()"); state = State.Play; Destroy(startUnitychan); unitychan.SetActive(true); Invoke("ClearStateLabel", 0.8f); //現在のDateTime構造体を設定 startDateTime = DateTime.Now; } void Clear() { state = State.Clear; HiscoreMoneySort(); HiscoreTimeSort(); unitychan.SetActive(false); clearUnitychan.SetActive(true); gameBGM.Stop(); stateLabel.gameObject.SetActive(true); stateLabel.text = "お金を\n" + string.Format("{0:#,0}円", Money.moneyCount) + " 拾って\n交番に届けたよ!!!"; //Time.timeScale = Mathf.Approximately(Time.timeScale, 0f) ? 1f : 0f; //scoreMoney = Money.moneyCount; //SaveScoreMoney(); } void Reload() { SceneManager.LoadScene("GiftyChan_Title"); } public static void IsClear() { isClear = true; } void ClearStateLabel() { stateLabel.gameObject.SetActive(false); stateLabel.text = ""; } void HiscoreMoneySort() { scoreMoneys[3] = Money.moneyCount; Array.Sort(scoreMoneys); Array.Reverse(scoreMoneys); } void HiscoreTimeSort() { scoreTimes[3] = totalTime; Array.Sort(scoreTimes); } public static int[] GetMoneyHiscore() { int[] gmh = new int[3]; for (int i = 0; i < 3; i++) { gmh[i] = scoreMoneys[i]; } return gmh; } public static TimeSpan[] GetTimeHiscore() { TimeSpan[] gth = new TimeSpan[3]; for (int i = 0; i < 3; i++) { gth[i] = scoreTimes[i]; } return gth; } void GhostRecording() { bool[] addGhost = new bool[3]; //入力を受け取ってデータ化 if (Input.GetKeyDown(KeyCode.Space)) { addGhost[0] = true; } else { addGhost[0] = false; } if (Input.GetKeyDown(KeyCode.LeftArrow)) { addGhost[1] = true; } else { addGhost[1] = false; } if (Input.GetKeyDown(KeyCode.RightArrow)) { addGhost[2] = true; } else { addGhost[2] = false; } //ghost.Add(addGhost); } }