The Ice Blocks Cracking Adventure Game是一款小游戏,几个冰块摞在一起,击碎下面的冰块,是最上方的蓝色冰块停留在平面上一定时间即可通关。
要简单模拟这个小游戏得思路很简单:建一个平面Plane,添加几个cube,给cube添加重力,并添加脚本,使下面的cube点击可以消失,给最上面的cube或者平面Plane添加碰撞检测,一旦最上面的冰块和平面相撞,就开始计时。
打开Unity 新建一个项目,新建一个平面和6个cube摆摆好:
给每个小cube添加重力:
点击一个cube,在右边的Inspector栏中,点击【Add Component 】->【Physcis】->【Rigidbody】
创建一个C#脚本,命名为ClickDisapper ,添加点击消失的代码:
超级简单 就一句:Destroy(this.gameObject);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ClickDisappear : MonoBehaviour {
public Transform obj;
public Camera objCamera;
void Start () {
}
void Update()
{
}
void OnMouseDown()
{
Destroy(this.gameObject);
}
}
将此脚本挂在每个cube上,每个小cube就有了重力。
创建一个脚本,命名为CubeCollision,用于检测碰撞并创建一个时间进度条。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Threading;
public class CubeCollision : MonoBehaviour {
public GUISkin theSkin;
public float bloodValue = 0.0f;
public float tmpValue;
public Rect rctBloodBar;
void Start () {
}
void Update ()
{
}
void OnCollisionEnter(Collision collision) // 碰撞开始
{
}
void OnCollisionExit(Collision collision) // 碰撞结束
{
}
void OnCollisionStay(Collision collision) // 碰撞持续中 CubeBoss落到地面 出现进度条
{
var tag = collision.collider.tag;
if (tag == "tag_2") //如果落下来的是CubeBoss 进度条上升
{
tmpValue = -1.0f;
rctBloodBar = new Rect(20, 20, 20, 200);
}
}
public void OnGUI()
{
GUI.skin = theSkin;
if (bloodValue > 0.0f) tmpValue = 0.0f;
if (bloodValue < -1.0f) tmpValue = -1.0f;
//插值计算HP值
bloodValue = Mathf.Lerp(bloodValue, tmpValue, 0.05f);
GUI.VerticalScrollbar(rctBloodBar, 1.0f, bloodValue, 0.0f, 1.0f, GUI.skin.GetStyle("verticalScrollbar"));
}
}
将这个脚本挂在平面Plane上,如果最上方的小方块CubeBoss碰到Plane,就会出现一个随时间上升的进度条。