【Unity3D】判断是否鼠标点击物体与血条制作

血条是在游戏中非常常见的东西,和Cocos2dx中《【Cocos2dx】利用音量螺旋控件控制血量条 》(点击打开链接)一样,Unity3D的血条也其实就是用一个slider就能做完的事情。同时,本文也将继《【Unity3D】用鼠标点击事件、AddForce完成跳跃与二段跳》(点击打开链接)说明鼠标点击屏幕屏幕进一步说明鼠标点击任一物体的监听。

下面将举一个例子说明这个物体,如图,血条代表10格血,如果球被点一下,则扣1格血,点屏幕其它地方不扣血。


一、场景布置

1、这部分主要叙述怎么将Slider改成血条的。开始先放个球、调整下照相机,在球中放个灯光看起来更好看,就不赘述了。


2、如同《【Unity3D】场景切换、UGUI组件事件、开始游戏与关闭游戏》(点击打开链接)中所有UI一样,一旦用到UGUI,先要添加一个Canvas,之后再于Canvas上整个Slider。Slider添加完毕,直接将Handle SliderArea去掉,也就是那个滑动杆、滑块。


同时在Slider的Inspector中是不可交互的,以为不允许用户自行滑动滑块。


3、修改Background的背景色为黑色,Fill Area的Fill填充色为红色,如图所示。


4、弄好之后,发现血条并未被填满。其实空出来这部分原本就是留给被我们去掉的Handle SliderArea的。


现在选择Fill Area在Inspector面板中修改Rect Transform中个属性,将Left、Right的值都设为0,至此一个简单的血条就制作完成了,或者你直接用矩形工具将红色的Fill Area调整到和Background一样大小也行。

5、之后我们并不需要这个Canvas和《【Unity3D】UGUI自适应屏幕与锚点》(点击打开链接)一样填充到整个屏幕。如下图,将Canvas的渲染设置到World Space,也就是像普通东西一样渲染。


之后我们需要同时对Slider和Canvas的位置和大小进行调整。调整后的属性,如图所示,不然太大了。


二、脚本布置

之后我们要实现点击球,就扣血的功能,编写如下脚本SphereClicked.cs,赋予到球上。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;    //Slider属于UI,用到这个头文件

public class SphereClicked : MonoBehaviour
{

    public Slider HPStrip;    //添加血条Slider的引用
    public int HP = 10;//开始为10滴血
    void Start()
    {
        HPStrip.value = HPStrip.maxValue = HP;    //初始化血条
        GameObject.Find("Sphere").AddComponent<MeshCollider>();//球与下面的抽象射线碰撞检测必须
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))//鼠标左键点下
        {
            //住摄像机向鼠标位置发射射线  
            Ray mRay = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit mHit;
            //射线检验  
            if (Physics.Raycast(mRay, out mHit))
            {
                if (mHit.collider.gameObject.tag == "Sphere")
                {
                    HP--;//点到这个球,血就-1
                    HPStrip.value = HP;    //对血条执行操作
                }
            }
        }

        /*之后还可以根据HP进行一些操作*/
        if (HP <= 0)
        {
            //写下血条被清空之后的处理
        }
    }

}
给球上这个脚本之后,还没有完,如同《【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏》( 点击打开链接)碰撞检测一样,我们先要给这个球,赋予一个tag,根据代码,这里的tag就是"Sphere"。再如同《【Unity3D】同场景物体传值与Vector》( 点击打开链接)中,设定我们这个脚本的public Slider HPStrip;就是我们刚才弄好的血条。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值