using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class RoadRandom : MonoBehaviour
{
// public GameObject StartLand;//length = 1.6
private float StartLandLength;
// public GameObject MidLand;//length = 3.5
private float MidLandLength;
// public GameObject EndLand;//length = 1.86
private float EndLandLength;
// private GameObject[] Monsters_Temp;
private List<GameObject> Monsters_Temp;
public List<GameObject> Monsters_Dusk;
// public GameObject[] Monsters_Dusk;
public List<GameObject> Monsters_Ground;
// public GameObject[] Monsters_Ground;
public List<GameObject> Monsters_Night;
// public GameObject[] Monsters_Night;
public List<GameObject> Monsters_Rain;
// public GameObject[] Monsters_Rain;
public List<GameObject> StartList_1;
public List<GameObject> MidList_1;
public List<GameObject> EndList_1;
public List<GameObject> StartList_2;
public List<GameObject> MidList_2;
public List<GameObject> EndList_2;
private GameObject obj;
private int currentDintance;
//curret car distance 距离
private int CurDistance;
private int RandomDistance = 30;
//随机一段路的路长度
private int RemainDistance= 20;//15
//触发生成随机路段点
// private float TinyRoadDis = 3.5f;//加载每一小段的长度
private int SumWeight;
private List<int> WeightList;
private List<int> TimesList;
private int MinCliffIndex = 3;
private float alreadyDis = 0;//记录每一次随机的路段的长度,随机完之后清零,下一次继续记录
private float offsetX = 0.025f;
//从加载一直到结束的计数
private int roadType;
//随机的路段类型 1,2,3,4,5,6
private int randomNum;
bool isCliff = false;
// Cliff 悬崖
private int StartRandomRoad = 3000;
//开始第一次要随机的路段点,在100米处开始随机路面 加上中间过渡路面 136
private int LastRoadType = 0;
//2级路面
private float Land2Height = 3.05f;//2.1
//开始随机路段的前的游戏距离,以3000为标准
private float RandomRoadLength = 1146;//3006.5f //1146表示换算成游戏引擎里面的距离,来判断是否加载路面
//随机路段总长度
private bool isRandom = false;
//路段的Y轴偏移量
private float YOffset = -2.1f;//-2.45
private float XOffset = 0.01f;
//-2.402995f
private float MonsterYOffset = 0f;
//-1.22278f
private List<MonsterEntity> RandomMonsterList;
private List<List<int>> monsterWeightList;
private List<int> MonsterSumList;
private float LandHalfHeight = 0f;
private LoadBgImage bgimageload;
[HideInInspector]
public GameObject start_1;
[HideInInspector]
public GameObject start_2;
[HideInInspector]
public GameObject mid_1;
[HideInInspector]
public GameObject mid_2;
[HideInInspector]
public GameObject end_1;
[HideInInspector]
public GameObject end_2;
public GameObject CurMidScene;
private bool isChangeSceneBg1 = false;
private bool isChangeSceneBg2 = false;
private bool isChangeSceneBg3 = false;
// private bool isChangeSceneBg4 = false;
//中间过渡场景路面高度
private float MidSceneHeight = 4.72f;
private ArrayList sceneRandomList;
private bool isMidScene = false;
private float isMidSceneWaitTime = 2f;
//已经添加的中间场景的数量
private int addedMidSceneNum = 0;
//是否改变背景
private bool isChangeBg = false;
//添加中间场景的距离倍数
// private float addMidSceneDisTimes = 3000;
private float addMidSceneDisTimes = 1146;//此倍数是引擎里面的距离
private float startFirstRandomRoadPoint = 1134.54f; // 1134.54f = 2970*0.382f
// private CarControlor stopLastBoss;
void Awake ()
{
InitLandList ();
CurMidScene = (GameObject)Resources.Load (AllPrefabsInfo.MIDSCENE);
InitMonsterList ();
}
void Start ()
{
// stopLastBoss = GameObject.FindGameObjectWithTag ("Player").GetComponent<CarControlor> ().controlBossInLevel (false);
sceneRandomList = new ArrayList{2,3,4} ;
// RandomMonsterList = MonsterParseXML.monsterDict [LandParseXML.landList [LandParseXML.index].Id];
// RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.landList [LandParseXML.index].Id);
RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.GetLand(LandParseXML.index).Id);
bgimageload = gameObject.GetComponent<LoadBgImage> ();
TempValue.GetInstance ().curLandType = (int)Land_type.Dusk_land;
LandParseXML.index = 0;
InitLandID ();
InitLandLength ();
//玩家行驶距离
InitCurParm ();
InitCurMonster ();
//第一次加载怪物
Monsters_Temp = Monsters_Dusk;
}
void InitCurParm ()
{
Debug.LogWarning ("************ * * * * * ** * ** * * * *重新分配路面!" + LandParseXML.index);
WeightList = new List<int> ();
TimesList = new List<int> ();
//LandParseXML.GetLand(LandParseXML.index).Id
// LandEntity temp = LandParseXML.landList [LandParseXML.index];
LandEntity temp = LandParseXML.GetLand(LandParseXML.index);
TimesList.Add (temp.times1);
TimesList.Add (temp.times2);
TimesList.Add (temp.times3);
TimesList.Add (temp.times4);
TimesList.Add (temp.times5);
TimesList.Add (temp.times6);
WeightList.Add (SumWeight += temp.weight1);
WeightList.Add (SumWeight += temp.weight2);
WeightList.Add (SumWeight += temp.weight3);
WeightList.Add (SumWeight += temp.weight4);
WeightList.Add (SumWeight += temp.weight5);
WeightList.Add (SumWeight += temp.weight6);
}
void InitCurMonster ()
{
monsterWeightList = new List<List<int>> ();
List<int> singleWeightList;
MonsterSumList = new List<int> ();
MonsterEntity temp;
int flag;
int count = RandomMonsterList.Count;
for (int i = 0; i < count; i++) {
flag = 0;
singleWeightList = new List<int> ();
temp = RandomMonsterList [i];
singleWeightList.Add (flag += temp.SunFlower);
singleWeightList.Add (flag += temp.Stone);
singleWeightList.Add (flag += temp.ShutUp);
singleWeightList.Add (flag += temp.CornHeap);
singleWeightList.Add (flag += temp.Empty);
MonsterSumList.Add (flag);
monsterWeightList.Add (singleWeightList);
}
}
void Update ()
{
//*2.6178f 显示玩家距离的系数(玩家距离并非游戏引擎距离)
// CurDistance = (int)(UserInfos.GetInstance ().distance * 2.6178f);//现在是从0开始,记录车子跑的距离
CurDistance = UserInfos.GetInstance ().finialDistance;//现在是从0开始,记录车子跑的当前距离
if (RandomRoadLength > startFirstRandomRoadPoint) {//100是相当于3000米时,判断开始加载随机路面
//如果随机的路长和当前车子跑的距离小于14米(引擎距离)时,随机下一段路,随机下一段路的路长为30米(引擎距离)
// Debug.LogWarning ("*******************************随机路1**********************************************" + RandomRoadLength);
if (RandomRoadLength - CurDistance*0.382f < RemainDistance) {
RandomSingleLand ();
}
} else if (CurDistance > StartRandomRoad - RemainDistance) {//StartRandomRoad - RandomDis 等到汽车行驶到一个点,然后触发随机路面
RandomSingleLand ();
}
if (isChangeBg) {
ChangeBgTexture ();
}
}
void RandomSingleLand ()
{
if (isRandom) {
return;
}
isRandom = true;
//添加过渡场景
bool result = NewMidScene (RandomRoadLength);
//设置路的类型
if (result) {
SetCurSceneLand (TempValue.GetInstance ().curLandType);
}
//LandParseXML.GetLand(LandParseXML.index).Id
// LandEntity le = LandParseXML.landList [LandParseXML.index];
LandEntity le = LandParseXML.GetLand(LandParseXML.index);
//开始随机
int count = WeightList.Count;
//现在默认随机 RandomDistance = 30米
while (alreadyDis <= RandomDistance) { //玩家的距离减去开始的3000米之后,行驶的距离和已经创建路的2/3处对比,判断是否创建下一级路面
randomNum = (int)(Random.value * SumWeight);//随机一个权重值
// Debug.Log("==========================="+randomNum);
for (int i = 0; i < count; i++) {
if (WeightList [i] > randomNum) {//和配置表中的权重对比
if (isCliff) {
roadType = (int)(Random.value * MinCliffIndex) + 1;
isCliff = false;
} else {
roadType = i + 1;//
isCliff = (roadType >= MinCliffIndex);//判断是否为悬崖
}
//创建路段
int times = TimesList [roadType - 1];
createRoad (roadType, times);
LastRoadType = roadType > 3 ? 0 : roadType;
break;
}
}
}
Debug.LogWarning (alreadyDis + "*******************RandomRoadLength******************" + RandomRoadLength);
RandomRoadLength += alreadyDis;
Debug.LogWarning ("*******************RandomRoadLength******************" + RandomRoadLength);
alreadyDis = 0;
if ((CurDistance + RandomDistance) > le.MINDIS) {
// Debug.LogWarning ("*************************************************************************************************RandomDistanceRandomDistance:" + RandomDistance);
LandParseXML.index++;
RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.GetLand(LandParseXML.index).Id);
InitCurParm ();
}
isRandom = false;
}
bool NewMidScene(float length){
int temp = (int)(length / addMidSceneDisTimes);
Debug.LogWarning (LastRoadType + "*******************temp******************" + temp + "*******************添加中间场景时的距离length:" + length + "***********添加中间场景倍数:" + addMidSceneDisTimes);
if (temp <= addedMidSceneNum) {
return false;
}
//暂停前一个场景的Boss
GameObject.FindGameObjectWithTag ("Player").GetComponent<CarControlor> ().controlBossInLevel (false);
//切换场景前添加悬崖
if (LastRoadType <= (int)LANDTYPE.THIRD) {
createRoad ((int)LANDTYPE.FOURTH, 1);
RandomRoadLength += alreadyDis;
alreadyDis = 0;
LastRoadType = (int)LANDTYPE.FOURTH;
}
// float tempPos = length/2.6178f;
float tempPos = length;
//36.5中间场景的长度的一半
// GameObject ob1 = (GameObject)Instantiate (CurMidScene, new Vector3 (tempPos + 36.5f, MidSceneHeight, 7f), Quaternion.identity);
GameObject ob1 = (GameObject)Instantiate (CurMidScene, new Vector3 (tempPos + 33.5f, MidSceneHeight, 7f), Quaternion.identity);
addedMidSceneNum++;
//72.5f 中间场景的总长度
RandomRoadLength += 72.5f;
isChangeBg = true;
SetRandomBgIndex ();
createRoad ((int)LANDTYPE.FOURTH, 1);
RandomRoadLength += alreadyDis;
alreadyDis = 0;
LastRoadType = (int)LANDTYPE.FOURTH;
return true;
}
/// <summary>
/// 改变游戏背景Texture Update
/// </summary>
void ChangeBgTexture ()
{
int temp = (int)((CurDistance *0.382f) / (addMidSceneDisTimes + 20 ));
if (addedMidSceneNum <=0 || temp <= addedMidSceneNum - 1) {
return;
}
ChangeRandomBg ();
isChangeBg = false;
}
// bool HasDownRoad (int temp)
// {
// return (temp == 1) || (temp == 3);
// }
//
// bool HasUpRoad (int temp)
// {
// return (temp == 2) || (temp == 3);
// }
//
// bool HasCliff (int temp)
// {
// return temp >= 4;
// }
void createRoad (int roadType, int times)
{
//StartLand + MidLand + EndLand 根据游戏距离,切换场景类型、背景类型、路面类型
//创建路面
switch (roadType) {
case (int)LANDTYPE.FIRST:
AddRoadLevel1 (times);
break;
case (int)LANDTYPE.SECOND:
//加载2级路面
AddRoadLevel2 (times);
break;
case (int)LANDTYPE.THIRD:
//加载3级路面
AddRoadLevel3 (times);
break;
case (int)LANDTYPE.FOURTH:
case (int)LANDTYPE.FIFTH:
case (int)LANDTYPE.SIXTH:
//加载6级路面
AddRoadLevel456 (times);
break;
}
}
/// <summary>
/// 添加一级路面
/// </summary>EndYOffset
/// <param name="times">Times.</param>
void AddRoadLevel1 (int times)
{
switch (LastRoadType) {
case 1:
break;
case 2:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
case 3:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
break;
default :
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster (times, MonsterYOffset);
//添加路面RandomMonsterList = MonsterParseXML.monsterDict [LandParseXML.landList[LandParseXML.index ].Id];
for (int i = 0; i < times; i++) {
// obj = (GameObject)Instantiate (MidLand, new Vector3 (RandomRoadLength +alreadyDis , YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 添加二级路面
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel2 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
case 2:
break;
case 3:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);//修改为1
break;
default :
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster2 (times, Land2Height + MonsterYOffset);
for (int i = 0; i < times; i++) {
// obj = (GameObject)Instantiate (MidLand, new Vector3 (RandomRoadLength +alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (mid_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 添加三级路面
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel3 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
break;
case 2:
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength + XOffset, YOffset, 5), Quaternion.identity);
break;
case 3:
break;
default :
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster (times, MonsterYOffset);
RandomMonster2 (times, Land2Height + MonsterYOffset);
for (int i = 0; i < times; i++) {
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (mid_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 4\5\6添加悬崖
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel456 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
case 2:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength +alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
case 3:
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
default :
break;
}
for (int i = 0; i < times; i++) {
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
obj.GetComponent<Land> ().GetComponent<SpriteRenderer> ().enabled = false;
obj.GetComponent<PolygonCollider2D> ().enabled = false;
}
}
/// <summary>
/// 随机怪物
/// </summary>
/// <param name="times">Times.</param>
/// <param name="Yoffset">Yoffset.</param>
void RandomMonster (int times, float Yoffset)
{
List<float> refpoint = RandomMonsterList [times].RefreshPoint;
float OnceLandLength = times * MidLandLength;
if (refpoint.Count < 1) {
return;
}
int SumMonsterWeight = MonsterSumList [times - 1];
List<int> list = monsterWeightList [times - 1];
for (int i = 0; i < refpoint.Count; i++) {
int Num = (int)(Random.value * SumMonsterWeight);//随机一个权重值
for (int j = 0; j < list.Count; j++) {
if (list [j] > Num) {//和配置表中的权重对比
createMonster (OnceLandLength * refpoint [i], j, Yoffset + LandHalfHeight);
break;
}
}
}
}
//创建怪物
void createMonster (float offset, int type, float Yoffset)
{
switch (type) {
case 0: //Sunflower
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.29f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.4f, 5), Quaternion.identity);
break;
case 1: //Stone
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.5f, 5), Quaternion.identity);
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.719267f, 0), Quaternion.identity);
break;
case 2: //Mouse
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.41f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.5f, 5), Quaternion.identity);
break;
case 3: //CornHeap
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.455448f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.3f, 5), Quaternion.identity);
break;
case 4: //Empty
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.455448f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.3f, 5), Quaternion.identity);
break;
}
}
void RandomMonster2 (int times, float Yoffset)
{
List<float> refpoint = RandomMonsterList [times].RefreshPoint;
float OnceLandLength = times * MidLandLength;
if (refpoint.Count < 1) {
return;
}
int SumMonsterWeight = MonsterSumList [times - 1];
List<int> list = monsterWeightList [times - 1];
for (int i = 0; i < refpoint.Count; i++) {
int Num = (int)(Random.value * SumMonsterWeight);//随机一个权重值
for (int j = 0; j < list.Count; j++) {
if (list [j] > Num) {//和配置表中的权重对比
createMonster2 (OnceLandLength * refpoint [i], j, Yoffset + LandHalfHeight);
break;
}
}
}
}
//创建怪物
void createMonster2 (float offset, int type, float Yoffset)
{
switch (type) {
case 0: //Sunflower
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.3f, 0), Quaternion.identity);//0.84 0.9899795
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2f, 5), Quaternion.identity);//0.84 0.9899795
break;
// case 1: //Stone
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.5f, 5), Quaternion.identity);//1.2
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.032524f, 0), Quaternion.identity);//1.2
break;
case 2: //Mouse
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.134363f, 0), Quaternion.identity);//0.669744f
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2f, 5), Quaternion.identity);//0.669744f
break;
case 3: //CornHeap
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.131733f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.2f, 5), Quaternion.identity);
break;
case 4: //Empty
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.11f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.5f, 5), Quaternion.identity);
break;
}
}
void SetCurSceneLand (int landType)
{
switch (landType) {
case (int)Land_type.Dusk_land:
start_1 = StartList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/Start_1");
start_2 = StartList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Start_2");
mid_1 = MidList_1 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_1");
mid_2 = MidList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_2");
end_1 = EndList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/End_1");
end_2 = EndList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/End_2");
break;
case (int)Land_type.Ground_land:
start_1 = StartList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_1");
start_2 = StartList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_2");
mid_1 = MidList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_1");
mid_2 = MidList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_2");
end_1 = EndList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_1");
end_2 = EndList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_2");
break;
case (int)Land_type.Night_land:
start_1 = StartList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_1");
start_2 = StartList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_2");
mid_1 = MidList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_1");
mid_2 = MidList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_2");
end_1 = EndList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_1");
end_2 = EndList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_2");
break;
case (int)Land_type.Rain_land:
start_1 = StartList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_1");
start_2 = StartList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_2");
mid_1 = MidList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_1");
mid_2 = MidList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_2");
end_1 = EndList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_1");
end_2 = EndList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_2");
break;
}
// isChangeLand = false;
}
/// <summary>
/// 根据随机数初始化路面
/// </summary>
void InitLandID ()
{
switch (TempValue.GetInstance ().SceneID) {
case 1:
start_1 = StartList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/Start_1");
start_2 = StartList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Start_2");
mid_1 = MidList_1 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_1");
mid_2 = MidList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_2");
end_1 = EndList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/End_1");
end_2 = EndList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/End_2");
break;
case 2:
start_1 = StartList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_1");
start_2 = StartList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_2");
mid_1 = MidList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_1");
mid_2 = MidList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_2");
end_1 = EndList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_1");
end_2 = EndList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_2");
break;
case 3:
start_1 = StartList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_1");
start_2 = StartList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_2");
mid_1 = MidList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_1");
mid_2 = MidList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_2");
end_1 = EndList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_1");
end_2 = EndList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_2");
break;
case 4:
start_1 = StartList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_1");
start_2 = StartList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_2");
mid_1 = MidList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_1");
mid_2 = MidList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_2");
end_1 = EndList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_1");
end_2 = EndList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_2");
break;
}
}
void InitLandList ()
{
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/Start_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/Mid_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/End_1"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/Start_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/Mid_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/End_2"));
}
void InitMonsterList ()
{
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/SunflowerRun"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Stone1"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/MouseRun"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Corn_Heap_Line"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Empty"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Pumpkin"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Bone"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Apple"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Corn_Heap_Line"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Empty"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Cactus"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Grass"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Duck"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Corn_Heap_Line"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Empty"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Wind_Sway"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Puddles_Wave"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Frog_Jump"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Corn_Heap_Line"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Empty"));
}
void InitLandLength ()
{
StartLandLength = start_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
MidLandLength = mid_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
EndLandLength = end_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
}
void ChangeRandomBg(){
bgimageload.ChangeSceneIdBg (TempValue.GetInstance ().curLandType + 1);
}
int SetRandomBgIndex(){
int tempIndex = Random.Range (0,sceneRandomList.Count);
int tempId = (int)sceneRandomList [tempIndex];
sceneRandomList.RemoveAt (tempIndex);
// int tempId = 2;
switch (tempId) {
case 1:
Monsters_Temp = Monsters_Dusk;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.SCENE_DUST);
break;
case 2:
Monsters_Temp = Monsters_Ground;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.UNDERGROUND);
break;
case 3:
Monsters_Temp = Monsters_Night;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.NIGHT);
break;
case 4:
Monsters_Temp = Monsters_Rain;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.RAIN);
break;
}
if(sceneRandomList.Count <= 0){
sceneRandomList.Add (2);
sceneRandomList.Add (3);
sceneRandomList.Add (4);
}
TempValue.GetInstance ().curLandType = tempId - 1;
return tempId;
}
}
using System.Collections;
using System.Collections.Generic;
public class RoadRandom : MonoBehaviour
{
// public GameObject StartLand;//length = 1.6
private float StartLandLength;
// public GameObject MidLand;//length = 3.5
private float MidLandLength;
// public GameObject EndLand;//length = 1.86
private float EndLandLength;
// private GameObject[] Monsters_Temp;
private List<GameObject> Monsters_Temp;
public List<GameObject> Monsters_Dusk;
// public GameObject[] Monsters_Dusk;
public List<GameObject> Monsters_Ground;
// public GameObject[] Monsters_Ground;
public List<GameObject> Monsters_Night;
// public GameObject[] Monsters_Night;
public List<GameObject> Monsters_Rain;
// public GameObject[] Monsters_Rain;
public List<GameObject> StartList_1;
public List<GameObject> MidList_1;
public List<GameObject> EndList_1;
public List<GameObject> StartList_2;
public List<GameObject> MidList_2;
public List<GameObject> EndList_2;
private GameObject obj;
private int currentDintance;
//curret car distance 距离
private int CurDistance;
private int RandomDistance = 30;
//随机一段路的路长度
private int RemainDistance= 20;//15
//触发生成随机路段点
// private float TinyRoadDis = 3.5f;//加载每一小段的长度
private int SumWeight;
private List<int> WeightList;
private List<int> TimesList;
private int MinCliffIndex = 3;
private float alreadyDis = 0;//记录每一次随机的路段的长度,随机完之后清零,下一次继续记录
private float offsetX = 0.025f;
//从加载一直到结束的计数
private int roadType;
//随机的路段类型 1,2,3,4,5,6
private int randomNum;
bool isCliff = false;
// Cliff 悬崖
private int StartRandomRoad = 3000;
//开始第一次要随机的路段点,在100米处开始随机路面 加上中间过渡路面 136
private int LastRoadType = 0;
//2级路面
private float Land2Height = 3.05f;//2.1
//开始随机路段的前的游戏距离,以3000为标准
private float RandomRoadLength = 1146;//3006.5f //1146表示换算成游戏引擎里面的距离,来判断是否加载路面
//随机路段总长度
private bool isRandom = false;
//路段的Y轴偏移量
private float YOffset = -2.1f;//-2.45
private float XOffset = 0.01f;
//-2.402995f
private float MonsterYOffset = 0f;
//-1.22278f
private List<MonsterEntity> RandomMonsterList;
private List<List<int>> monsterWeightList;
private List<int> MonsterSumList;
private float LandHalfHeight = 0f;
private LoadBgImage bgimageload;
[HideInInspector]
public GameObject start_1;
[HideInInspector]
public GameObject start_2;
[HideInInspector]
public GameObject mid_1;
[HideInInspector]
public GameObject mid_2;
[HideInInspector]
public GameObject end_1;
[HideInInspector]
public GameObject end_2;
public GameObject CurMidScene;
private bool isChangeSceneBg1 = false;
private bool isChangeSceneBg2 = false;
private bool isChangeSceneBg3 = false;
// private bool isChangeSceneBg4 = false;
//中间过渡场景路面高度
private float MidSceneHeight = 4.72f;
private ArrayList sceneRandomList;
private bool isMidScene = false;
private float isMidSceneWaitTime = 2f;
//已经添加的中间场景的数量
private int addedMidSceneNum = 0;
//是否改变背景
private bool isChangeBg = false;
//添加中间场景的距离倍数
// private float addMidSceneDisTimes = 3000;
private float addMidSceneDisTimes = 1146;//此倍数是引擎里面的距离
private float startFirstRandomRoadPoint = 1134.54f; // 1134.54f = 2970*0.382f
// private CarControlor stopLastBoss;
void Awake ()
{
InitLandList ();
CurMidScene = (GameObject)Resources.Load (AllPrefabsInfo.MIDSCENE);
InitMonsterList ();
}
void Start ()
{
// stopLastBoss = GameObject.FindGameObjectWithTag ("Player").GetComponent<CarControlor> ().controlBossInLevel (false);
sceneRandomList = new ArrayList{2,3,4} ;
// RandomMonsterList = MonsterParseXML.monsterDict [LandParseXML.landList [LandParseXML.index].Id];
// RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.landList [LandParseXML.index].Id);
RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.GetLand(LandParseXML.index).Id);
bgimageload = gameObject.GetComponent<LoadBgImage> ();
TempValue.GetInstance ().curLandType = (int)Land_type.Dusk_land;
LandParseXML.index = 0;
InitLandID ();
InitLandLength ();
//玩家行驶距离
InitCurParm ();
InitCurMonster ();
//第一次加载怪物
Monsters_Temp = Monsters_Dusk;
}
void InitCurParm ()
{
Debug.LogWarning ("************ * * * * * ** * ** * * * *重新分配路面!" + LandParseXML.index);
WeightList = new List<int> ();
TimesList = new List<int> ();
//LandParseXML.GetLand(LandParseXML.index).Id
// LandEntity temp = LandParseXML.landList [LandParseXML.index];
LandEntity temp = LandParseXML.GetLand(LandParseXML.index);
TimesList.Add (temp.times1);
TimesList.Add (temp.times2);
TimesList.Add (temp.times3);
TimesList.Add (temp.times4);
TimesList.Add (temp.times5);
TimesList.Add (temp.times6);
WeightList.Add (SumWeight += temp.weight1);
WeightList.Add (SumWeight += temp.weight2);
WeightList.Add (SumWeight += temp.weight3);
WeightList.Add (SumWeight += temp.weight4);
WeightList.Add (SumWeight += temp.weight5);
WeightList.Add (SumWeight += temp.weight6);
}
void InitCurMonster ()
{
monsterWeightList = new List<List<int>> ();
List<int> singleWeightList;
MonsterSumList = new List<int> ();
MonsterEntity temp;
int flag;
int count = RandomMonsterList.Count;
for (int i = 0; i < count; i++) {
flag = 0;
singleWeightList = new List<int> ();
temp = RandomMonsterList [i];
singleWeightList.Add (flag += temp.SunFlower);
singleWeightList.Add (flag += temp.Stone);
singleWeightList.Add (flag += temp.ShutUp);
singleWeightList.Add (flag += temp.CornHeap);
singleWeightList.Add (flag += temp.Empty);
MonsterSumList.Add (flag);
monsterWeightList.Add (singleWeightList);
}
}
void Update ()
{
//*2.6178f 显示玩家距离的系数(玩家距离并非游戏引擎距离)
// CurDistance = (int)(UserInfos.GetInstance ().distance * 2.6178f);//现在是从0开始,记录车子跑的距离
CurDistance = UserInfos.GetInstance ().finialDistance;//现在是从0开始,记录车子跑的当前距离
if (RandomRoadLength > startFirstRandomRoadPoint) {//100是相当于3000米时,判断开始加载随机路面
//如果随机的路长和当前车子跑的距离小于14米(引擎距离)时,随机下一段路,随机下一段路的路长为30米(引擎距离)
// Debug.LogWarning ("*******************************随机路1**********************************************" + RandomRoadLength);
if (RandomRoadLength - CurDistance*0.382f < RemainDistance) {
RandomSingleLand ();
}
} else if (CurDistance > StartRandomRoad - RemainDistance) {//StartRandomRoad - RandomDis 等到汽车行驶到一个点,然后触发随机路面
RandomSingleLand ();
}
if (isChangeBg) {
ChangeBgTexture ();
}
}
void RandomSingleLand ()
{
if (isRandom) {
return;
}
isRandom = true;
//添加过渡场景
bool result = NewMidScene (RandomRoadLength);
//设置路的类型
if (result) {
SetCurSceneLand (TempValue.GetInstance ().curLandType);
}
//LandParseXML.GetLand(LandParseXML.index).Id
// LandEntity le = LandParseXML.landList [LandParseXML.index];
LandEntity le = LandParseXML.GetLand(LandParseXML.index);
//开始随机
int count = WeightList.Count;
//现在默认随机 RandomDistance = 30米
while (alreadyDis <= RandomDistance) { //玩家的距离减去开始的3000米之后,行驶的距离和已经创建路的2/3处对比,判断是否创建下一级路面
randomNum = (int)(Random.value * SumWeight);//随机一个权重值
// Debug.Log("==========================="+randomNum);
for (int i = 0; i < count; i++) {
if (WeightList [i] > randomNum) {//和配置表中的权重对比
if (isCliff) {
roadType = (int)(Random.value * MinCliffIndex) + 1;
isCliff = false;
} else {
roadType = i + 1;//
isCliff = (roadType >= MinCliffIndex);//判断是否为悬崖
}
//创建路段
int times = TimesList [roadType - 1];
createRoad (roadType, times);
LastRoadType = roadType > 3 ? 0 : roadType;
break;
}
}
}
Debug.LogWarning (alreadyDis + "*******************RandomRoadLength******************" + RandomRoadLength);
RandomRoadLength += alreadyDis;
Debug.LogWarning ("*******************RandomRoadLength******************" + RandomRoadLength);
alreadyDis = 0;
if ((CurDistance + RandomDistance) > le.MINDIS) {
// Debug.LogWarning ("*************************************************************************************************RandomDistanceRandomDistance:" + RandomDistance);
LandParseXML.index++;
RandomMonsterList = MonsterParseXML.GetMonsterListById(LandParseXML.GetLand(LandParseXML.index).Id);
InitCurParm ();
}
isRandom = false;
}
bool NewMidScene(float length){
int temp = (int)(length / addMidSceneDisTimes);
Debug.LogWarning (LastRoadType + "*******************temp******************" + temp + "*******************添加中间场景时的距离length:" + length + "***********添加中间场景倍数:" + addMidSceneDisTimes);
if (temp <= addedMidSceneNum) {
return false;
}
//暂停前一个场景的Boss
GameObject.FindGameObjectWithTag ("Player").GetComponent<CarControlor> ().controlBossInLevel (false);
//切换场景前添加悬崖
if (LastRoadType <= (int)LANDTYPE.THIRD) {
createRoad ((int)LANDTYPE.FOURTH, 1);
RandomRoadLength += alreadyDis;
alreadyDis = 0;
LastRoadType = (int)LANDTYPE.FOURTH;
}
// float tempPos = length/2.6178f;
float tempPos = length;
//36.5中间场景的长度的一半
// GameObject ob1 = (GameObject)Instantiate (CurMidScene, new Vector3 (tempPos + 36.5f, MidSceneHeight, 7f), Quaternion.identity);
GameObject ob1 = (GameObject)Instantiate (CurMidScene, new Vector3 (tempPos + 33.5f, MidSceneHeight, 7f), Quaternion.identity);
addedMidSceneNum++;
//72.5f 中间场景的总长度
RandomRoadLength += 72.5f;
isChangeBg = true;
SetRandomBgIndex ();
createRoad ((int)LANDTYPE.FOURTH, 1);
RandomRoadLength += alreadyDis;
alreadyDis = 0;
LastRoadType = (int)LANDTYPE.FOURTH;
return true;
}
/// <summary>
/// 改变游戏背景Texture Update
/// </summary>
void ChangeBgTexture ()
{
int temp = (int)((CurDistance *0.382f) / (addMidSceneDisTimes + 20 ));
if (addedMidSceneNum <=0 || temp <= addedMidSceneNum - 1) {
return;
}
ChangeRandomBg ();
isChangeBg = false;
}
// bool HasDownRoad (int temp)
// {
// return (temp == 1) || (temp == 3);
// }
//
// bool HasUpRoad (int temp)
// {
// return (temp == 2) || (temp == 3);
// }
//
// bool HasCliff (int temp)
// {
// return temp >= 4;
// }
void createRoad (int roadType, int times)
{
//StartLand + MidLand + EndLand 根据游戏距离,切换场景类型、背景类型、路面类型
//创建路面
switch (roadType) {
case (int)LANDTYPE.FIRST:
AddRoadLevel1 (times);
break;
case (int)LANDTYPE.SECOND:
//加载2级路面
AddRoadLevel2 (times);
break;
case (int)LANDTYPE.THIRD:
//加载3级路面
AddRoadLevel3 (times);
break;
case (int)LANDTYPE.FOURTH:
case (int)LANDTYPE.FIFTH:
case (int)LANDTYPE.SIXTH:
//加载6级路面
AddRoadLevel456 (times);
break;
}
}
/// <summary>
/// 添加一级路面
/// </summary>EndYOffset
/// <param name="times">Times.</param>
void AddRoadLevel1 (int times)
{
switch (LastRoadType) {
case 1:
break;
case 2:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
case 3:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
break;
default :
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster (times, MonsterYOffset);
//添加路面RandomMonsterList = MonsterParseXML.monsterDict [LandParseXML.landList[LandParseXML.index ].Id];
for (int i = 0; i < times; i++) {
// obj = (GameObject)Instantiate (MidLand, new Vector3 (RandomRoadLength +alreadyDis , YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 添加二级路面
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel2 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
case 2:
break;
case 3:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);//修改为1
break;
default :
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster2 (times, Land2Height + MonsterYOffset);
for (int i = 0; i < times; i++) {
// obj = (GameObject)Instantiate (MidLand, new Vector3 (RandomRoadLength +alreadyDis, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (mid_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 添加三级路面
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel3 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength, Land2Height + YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
break;
case 2:
// obj = (GameObject)Instantiate (StartLand, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength, YOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis - StartLandLength + XOffset, YOffset, 5), Quaternion.identity);
break;
case 3:
break;
default :
obj = (GameObject)Instantiate (start_2, new Vector3 (RandomRoadLength + alreadyDis + offsetX, Land2Height + YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (start_1, new Vector3 (RandomRoadLength + alreadyDis + XOffset, YOffset, 5), Quaternion.identity);
alreadyDis += StartLandLength;
break;
}
RandomMonster (times, MonsterYOffset);
RandomMonster2 (times, Land2Height + MonsterYOffset);
for (int i = 0; i < times; i++) {
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (mid_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
}
}
/// <summary>
/// 4\5\6添加悬崖
/// </summary>
/// <param name="roadType">Road type.</param>
/// <param name="times">Times.</param>
void AddRoadLevel456 (int times)
{
switch (LastRoadType) {
case 1:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength + alreadyDis, YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
case 2:
// obj = (GameObject)Instantiate (EndLand, new Vector3 (RandomRoadLength +alreadyDis, Land2Height + YOffset + EndYOffset, 0), Quaternion.identity);
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
case 3:
obj = (GameObject)Instantiate (end_2, new Vector3 (RandomRoadLength + alreadyDis, Land2Height + YOffset, 5), Quaternion.identity);
obj = (GameObject)Instantiate (end_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += EndLandLength;
break;
default :
break;
}
for (int i = 0; i < times; i++) {
obj = (GameObject)Instantiate (mid_1, new Vector3 (RandomRoadLength + alreadyDis, YOffset, 5), Quaternion.identity);
alreadyDis += MidLandLength;
obj.GetComponent<Land> ().GetComponent<SpriteRenderer> ().enabled = false;
obj.GetComponent<PolygonCollider2D> ().enabled = false;
}
}
/// <summary>
/// 随机怪物
/// </summary>
/// <param name="times">Times.</param>
/// <param name="Yoffset">Yoffset.</param>
void RandomMonster (int times, float Yoffset)
{
List<float> refpoint = RandomMonsterList [times].RefreshPoint;
float OnceLandLength = times * MidLandLength;
if (refpoint.Count < 1) {
return;
}
int SumMonsterWeight = MonsterSumList [times - 1];
List<int> list = monsterWeightList [times - 1];
for (int i = 0; i < refpoint.Count; i++) {
int Num = (int)(Random.value * SumMonsterWeight);//随机一个权重值
for (int j = 0; j < list.Count; j++) {
if (list [j] > Num) {//和配置表中的权重对比
createMonster (OnceLandLength * refpoint [i], j, Yoffset + LandHalfHeight);
break;
}
}
}
}
//创建怪物
void createMonster (float offset, int type, float Yoffset)
{
switch (type) {
case 0: //Sunflower
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.29f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.4f, 5), Quaternion.identity);
break;
case 1: //Stone
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.5f, 5), Quaternion.identity);
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.719267f, 0), Quaternion.identity);
break;
case 2: //Mouse
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.41f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.5f, 5), Quaternion.identity);
break;
case 3: //CornHeap
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.455448f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.3f, 5), Quaternion.identity);
break;
case 4: //Empty
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, -1.455448f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 0.3f, 5), Quaternion.identity);
break;
}
}
void RandomMonster2 (int times, float Yoffset)
{
List<float> refpoint = RandomMonsterList [times].RefreshPoint;
float OnceLandLength = times * MidLandLength;
if (refpoint.Count < 1) {
return;
}
int SumMonsterWeight = MonsterSumList [times - 1];
List<int> list = monsterWeightList [times - 1];
for (int i = 0; i < refpoint.Count; i++) {
int Num = (int)(Random.value * SumMonsterWeight);//随机一个权重值
for (int j = 0; j < list.Count; j++) {
if (list [j] > Num) {//和配置表中的权重对比
createMonster2 (OnceLandLength * refpoint [i], j, Yoffset + LandHalfHeight);
break;
}
}
}
}
//创建怪物
void createMonster2 (float offset, int type, float Yoffset)
{
switch (type) {
case 0: //Sunflower
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.3f, 0), Quaternion.identity);//0.84 0.9899795
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2f, 5), Quaternion.identity);//0.84 0.9899795
break;
// case 1: //Stone
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.5f, 5), Quaternion.identity);//1.2
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.032524f, 0), Quaternion.identity);//1.2
break;
case 2: //Mouse
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.134363f, 0), Quaternion.identity);//0.669744f
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2f, 5), Quaternion.identity);//0.669744f
break;
case 3: //CornHeap
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.131733f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.2f, 5), Quaternion.identity);
break;
case 4: //Empty
// obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 1.11f, 0), Quaternion.identity);
obj = (GameObject)Instantiate (Monsters_Temp [type], new Vector3 (RandomRoadLength + alreadyDis + offset, 2.5f, 5), Quaternion.identity);
break;
}
}
void SetCurSceneLand (int landType)
{
switch (landType) {
case (int)Land_type.Dusk_land:
start_1 = StartList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/Start_1");
start_2 = StartList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Start_2");
mid_1 = MidList_1 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_1");
mid_2 = MidList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_2");
end_1 = EndList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/End_1");
end_2 = EndList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/End_2");
break;
case (int)Land_type.Ground_land:
start_1 = StartList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_1");
start_2 = StartList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_2");
mid_1 = MidList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_1");
mid_2 = MidList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_2");
end_1 = EndList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_1");
end_2 = EndList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_2");
break;
case (int)Land_type.Night_land:
start_1 = StartList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_1");
start_2 = StartList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_2");
mid_1 = MidList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_1");
mid_2 = MidList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_2");
end_1 = EndList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_1");
end_2 = EndList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_2");
break;
case (int)Land_type.Rain_land:
start_1 = StartList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_1");
start_2 = StartList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_2");
mid_1 = MidList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_1");
mid_2 = MidList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_2");
end_1 = EndList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_1");
end_2 = EndList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_2");
break;
}
// isChangeLand = false;
}
/// <summary>
/// 根据随机数初始化路面
/// </summary>
void InitLandID ()
{
switch (TempValue.GetInstance ().SceneID) {
case 1:
start_1 = StartList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/Start_1");
start_2 = StartList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Start_2");
mid_1 = MidList_1 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_1");
mid_2 = MidList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/Mid_2");
end_1 = EndList_1 [0]; //(GameObject)Resources.Load("Prefab/Land/1/End_1");
end_2 = EndList_2 [0];//(GameObject)Resources.Load("Prefab/Land/1/End_2");
break;
case 2:
start_1 = StartList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_1");
start_2 = StartList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Start_2");
mid_1 = MidList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_1");
mid_2 = MidList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/Mid_2");
end_1 = EndList_1 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_1");
end_2 = EndList_2 [1];//(GameObject)Resources.Load("Prefab/Land/2/End_2");
break;
case 3:
start_1 = StartList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_1");
start_2 = StartList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Start_2");
mid_1 = MidList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_1");
mid_2 = MidList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/Mid_2");
end_1 = EndList_1 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_1");
end_2 = EndList_2 [2];//(GameObject)Resources.Load("Prefab/Land/3/End_2");
break;
case 4:
start_1 = StartList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_1");
start_2 = StartList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Start_2");
mid_1 = MidList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_1");
mid_2 = MidList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/Mid_2");
end_1 = EndList_1 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_1");
end_2 = EndList_2 [3];//(GameObject)Resources.Load("Prefab/Land/4/End_2");
break;
}
}
void InitLandList ()
{
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/Start_1"));
StartList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/Start_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/Mid_1"));
MidList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/Mid_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/1/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/2/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/3/End_1"));
EndList_1.Add ((GameObject)Resources.Load ("Prefab/Land/4/End_1"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/Start_2"));
StartList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/Start_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/Mid_2"));
MidList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/Mid_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/1/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/2/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/3/End_2"));
EndList_2.Add ((GameObject)Resources.Load ("Prefab/Land/4/End_2"));
}
void InitMonsterList ()
{
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/SunflowerRun"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Stone1"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/MouseRun"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Corn_Heap_Line"));
Monsters_Dusk.Add ((GameObject)Resources.Load ("Prefab/Dusk/Empty"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Pumpkin"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Bone"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Ground_Apple"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Corn_Heap_Line"));
Monsters_Ground.Add ((GameObject)Resources.Load ("Prefab/Ground/Empty"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Cactus"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Grass"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Night_Duck"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Corn_Heap_Line"));
Monsters_Night.Add ((GameObject)Resources.Load ("Prefab/Night/Empty"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Wind_Sway"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Puddles_Wave"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Rain_Frog_Jump"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Corn_Heap_Line"));
Monsters_Rain.Add ((GameObject)Resources.Load ("Prefab/Rain/Empty"));
}
void InitLandLength ()
{
StartLandLength = start_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
MidLandLength = mid_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
EndLandLength = end_1.GetComponent<Land> ().GetComponent<SpriteRenderer> ().bounds.size.x;
}
void ChangeRandomBg(){
bgimageload.ChangeSceneIdBg (TempValue.GetInstance ().curLandType + 1);
}
int SetRandomBgIndex(){
int tempIndex = Random.Range (0,sceneRandomList.Count);
int tempId = (int)sceneRandomList [tempIndex];
sceneRandomList.RemoveAt (tempIndex);
// int tempId = 2;
switch (tempId) {
case 1:
Monsters_Temp = Monsters_Dusk;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.SCENE_DUST);
break;
case 2:
Monsters_Temp = Monsters_Ground;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.UNDERGROUND);
break;
case 3:
Monsters_Temp = Monsters_Night;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.NIGHT);
break;
case 4:
Monsters_Temp = Monsters_Rain;
AudioMngr.GetInstance ().PlayMusic (AudioConfig.RAIN);
break;
}
if(sceneRandomList.Count <= 0){
sceneRandomList.Add (2);
sceneRandomList.Add (3);
sceneRandomList.Add (4);
}
TempValue.GetInstance ().curLandType = tempId - 1;
return tempId;
}
}