code ソーシャル

Unityアプリcodetips(62)

スポンサーリンク

//tips
stage作成

//clearlevel認識の拡張

今回Stage2−6のクリアがtitlemanageのhellモード編集よりも前に行われたため、level設定を直すのにstage1-1からやらねばならなかったので、ゴールした時点で設定されるclearlevelに対してstageselectの段階で設定できるnowlevelとの関係性を作ることで、最初からやり直す手間を回避した。

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

using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class StageSelectManager222 : MonoBehaviour
{
public GameObject[] stageButtons; //ステージ選択ボタン配列

// 非同期動作で使用するAsyncOperation
private AsyncOperation async;
// シーンロード中に表示するUI画面
[SerializeField]
private GameObject loadUI;
// 読み込み率を表示するスライダー
[SerializeField]
private Slider slider;

public int clearlevel;

 

void Start()
{
//PlayerPrefs.DeleteAll();

int clearStageNohl = PlayerPrefs.GetInt("CLEARhl", 0); //どのステージまでクリアしているのかをロード(セーブされていなければ「0」)

clearlevel = PlayerPrefs.GetInt("LEVEL", 0);//easy0,hard1,hell2

//ステージボタンを有効化
for (int i = 0; i <= stageButtons.GetUpperBound(0); i++)
{
bool buttonEnable;

if (clearStageNohl < i)
{
buttonEnable = false; //前ステージをクリアしていなければ無効
}
else
{
buttonEnable = true; //前ステージをクリアしていれば有効
}

stageButtons[i].GetComponent<Button>().interactable = buttonEnable; //ボタンの有効/無効を設定
}
}

void Update()
{

}

//ステージ選択ボタンを押した
//public void PushStageSelectButton(int stageNo)

//SceneManager.LoadScene("GameScene" + stageNo); //ゲームシーンへ

public void NextScene(int stageNo)
{
int nowlevel = PlayerPrefs.GetInt("nowLEVEL", 0);
nowlevel = 2;
PlayerPrefs.SetInt("nowLEVEL", nowlevel);
PlayerPrefs.Save();

if (nowlevel > clearlevel)
{
clearlevel = nowlevel; //nowlevelはstageselectで定義済み、titlemanageの補足
PlayerPrefs.SetInt("LEVEL", clearlevel);
PlayerPrefs.Save();
}

// ロード画面UIをアクティブにする
loadUI.SetActive(true);

// コルーチンを開始
StartCoroutine("PushStageSelectButton" + stageNo);
}

IEnumerator PushStageSelectButton1()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene31");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}

IEnumerator PushStageSelectButton2()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene32");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}

IEnumerator PushStageSelectButton3()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene33");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}
IEnumerator PushStageSelectButton4()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene34");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}
IEnumerator PushStageSelectButton5()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene35");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}
IEnumerator PushStageSelectButton6()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("GameScene36");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}

public void BackScene()
{
// ロード画面UIをアクティブにする
loadUI.SetActive(true);

// コルーチンを開始
StartCoroutine("BackSeneloading");
//SceneManager.LoadScene("TitleScene");
}

IEnumerator BackSeneloading()
{
// シーンの読み込みをする
async = SceneManager.LoadSceneAsync("TitleScene");

// 読み込みが終わるまで進捗状況をスライダーの値に反映させる
while (!async.isDone)
{
var progressVal = Mathf.Clamp01(async.progress / 0.9f);
slider.value = progressVal;
yield return null;
}
}

}

//particleのenemyに対して

Particleのenemyを作成したが、常時play使用すると負荷が大きいので判定を出したいときのみエフェクトを発現するようにした。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class EnemyPar : MonoBehaviour
{
[SerializeField] GameObject Fade;

[SerializeField] ParticleSystem particle;

GameObject Player;
//Animator anim;

Vector3 MOVEX = new Vector3(1.0f, 0, 0);
Vector3 MOVEY = new Vector3(0, 1.0f, 0);
Vector3 MOVEZ = new Vector3(0, 0, 1.0f);

 

Vector3 target; // 入力受付時、移動後の位置を算出して保存

private int count = 0;

void Start()
{
target = transform.position;

this.Player = GameObject.Find("Player");

particle.Stop(true, ParticleSystemStopBehavior.StopEmitting);

}

void Update()
{
if (Input.anyKeyDown)
{
count++;

if (count == 1)
{
target = transform.position + MOVEY;

}

if (count == 3)
{

target = transform.position - MOVEY;
particle.Play(true);

}

if (count == 12)
{

Vector3 pos = new Vector3(4, -0.5f, 9);
target = pos;

}
if (count == 13)
{
target = transform.position + MOVEY;
particle.Stop(true, ParticleSystemStopBehavior.StopEmitting);

}

 

}

 

Move();

Vector3 p1 = transform.position;
Vector3 p2 = this.Player.transform.position;

 

if (p1 == p2)
{
Fadeover();

if (Player != null)
{
Invoke("Over", 1);

}
}

}
void Move()
{
this.transform.position = target;
}
void Over()
{
SceneManager.LoadScene("GameOver");
}
void Fadeover()
{
Fade.SetActive(true);
}

}

 

 

人気の記事

1

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

4

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-code, ソーシャル
-,

Copyright© BUSINESS HACKER , 2020 All Rights Reserved Powered by AFFINGER5.