Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)

 The Ice Blocks Cracking Adventure Game是一款小游戏,几个冰块摞在一起,击碎下面的冰块,是最上方的蓝色冰块停留在平面上一定时间即可通关。

Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)_第1张图片

要简单模拟这个小游戏得思路很简单:建一个平面Plane,添加几个cube,给cube添加重力,并添加脚本,使下面的cube点击可以消失,给最上面的cube或者平面Plane添加碰撞检测,一旦最上面的冰块和平面相撞,就开始计时。

打开Unity 新建一个项目,新建一个平面和6个cube摆摆好:

Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)_第2张图片

 给每个小cube添加重力:

点击一个cube,在右边的Inspector栏中,点击【Add Component 】->【Physcis】->【Rigidbody】

Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)_第3张图片

 Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)_第4张图片

 Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落)_第5张图片

创建一个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,就会出现一个随时间上升的进度条。

 

你可能感兴趣的:(Unity3D——The Ice Blocks Cracking Adventure Game 模拟(点击消失下落))