一、障碍物自动生成
为了保证游戏结束之前有源源不断的障碍物生成,所以要实现随机生成位置不同大小不同的障碍物。设置barrier为预设体,新建一个名为BarrierControl的C#文件,将其挂在BarrierControl上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BarrierControl : MonoBehaviour {
public GameObject player;
public GameObject CurrentBarrier;
public GameObject BarrierPre;
public int barrierInterval = 5;
// Use this for initialization
// Update is called once per frame
void Update () {
AutoCreatBarrier();
}
public void AutoCreatBarrier()
{
if(player.transform.position.x>CurrentBarrier.transform.position.x)
{
//分数增加
UICntrol._instance.AddScore(5);
//坐标的设置
float targetX = CurrentBarrier.transform.position.x + barrierInterval;
float targetY = RandomBarrrierPositionY();
Vector3 targetPos = new Vector3(targetX,targetY,0);
//生成
GameObject g = Instantiate(BarrierPre,targetPos,Quaternion.identity);
//随机生成高度
g.transform.localScale = new Vector3(g.transform.localScale.x, RandomBarrierSize((int)g.transform.position.y), g.transform.localScale.z);
CurrentBarrier = g;
}
}
public float RandomBarrrierPositionY()
{
int r = Random.Range(-3,3);
return r;
}
public float RandomBarrierSize(int r)
{
int rAbs = Mathf.Abs(r);
if(rAbs==0)
{
return 6;
}
else
{
return (3 - rAbs) * 2 - 1;
}
}
}
二、障碍物自动销毁
为了防止障碍物生成后过多占用空间,故要设置小球经过后障碍物自动销毁。新建一个Cube 改名为Trigger并添加刚体属性。新建一个名为AutoDestoryBarrier的C#文件,将其挂在这个Trigger上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AutoDestoryBarriers : MonoBehaviour {
private void OnTriggerEnter(Collider other)
{
Destroy(other.gameObject);
}
}
三、障碍物颜色随机组
障碍物颜色随机生成,新建一个名为BarrierColor的C#文件,将其挂在Barrier上,将五个材质球放在Barriermaterials中。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BarrierColor : MonoBehaviour {
public Material[] barriermaterials;
void Start()
{
int i = Random.Range (0, barriermaterials.Length);
gameObject.GetComponent<Renderer> ().material = barriermaterials [i];
}
}
四、碰到障碍物颜色提示
新建一个名为PlayerColorCollision的C#文件将其挂在player上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerColorCollision : MonoBehaviour {
private void OnCollisionEnter(Collision collision)
{
UICntrol._instance.AddScore (-4);
gameObject.GetComponent<Renderer> ().material.color = Color.red;
}
private void OnCollisionExit(Collision collision)
{
gameObject.GetComponent<Renderer> ().material.color = Color.white;
}
}
五、分数
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UICntrol : MonoBehaviour {
public Text scoreText;
public int score=0;
//游戏开发的设计模式--单例模式
public static UICntrol _instance;
private void Awake()
{
_instance = this;
}
//得分的情况
public void AddScore(int x)
{
score += x;
scoreText.text = "得分" + score;
}
}
总结
小球酷跑小游戏,就在这里完结啦!撒花!!