项目之血条分析

 

           项目之血条分析        
        今天是做项目的第一天,小组在做项目的时候分工明确,但是出现了很多这样那样的错误,在写代码时代码正确,却一直实现不了相应的效果,有的是代码错误却改正不了,还有的是细节方面把握的不到位。可以说是漏洞百出,问题很多,但是在大家的共同协作下很快解决了这个问题。为此我们感到很Happy.解决问题是为了更好的做项目。
         在做条任务的时候我们感觉到了一丢丢的困难如血条:

     在做血条的过程中最大的问题是标志位的判断。
  if(nowHP>=100){  //如果nowHP于或等于100

        nowHP=100; //nowHP 等於 100

    }else if(nowHP<=0){ //或者如果nowHP于等于0

        nowHP=0;//nowHP 于 0

    }


      if (flag==1) {
            if (HP < 10)
            {
                HP += Time.deltaTime;
                print(HP);
            }
            else
            {
                flag = 2;
            }
        }
     

          if (HP   <=10)
        {
            float blood_width = blood_red.width * HP / 10;
            GUI.DrawTexture(new Rect(20, 20, blood_black.width, blood_black.height), blood_black);
            GUI.DrawTexture(new Rect(20, 20, blood_width, blood_red.height), blood_red);
            GUI.skin.label.fontSize = 10;
            GUI.color = Color.red;
            GUI.Label(new Rect(70, 70, 200, 50), (int )HP*10+ "%");
        }
      if (GUI.Button(new Rect(100, 280, 100, 40), "开始"))
        {
            print(HP);
            if (HP < 1.0f)
            {
                flag = 1;

            }
        }
        if(flag ==2)
        {
            Application.LoadLevel("BackGround");
        }
   两个标志位判断



        以上便是今天学到的知识, 如果你有什么不会的话,可以来狗刨学习网上来看看,如果你想在Unity3D上大展手脚的话,可以来狗刨培训与专家咨询

### 需求分析 要在 Unity3D 中实现鼠标右键点击物品并通过 Slider 控制量恢复功能,需要完成以下几个部分: 1. **检测鼠标右键点击事件**:通过 `Input.GetMouseButton` 或者 `Physics.Raycast` 来判断鼠标右键是否被按下以及点击的对象是什么。 2. **绑定目标对象与滑动器 (Slider)**:将目标对象的量属性与 UI 上的 Slider 组件关联起来。 3. **控制量变化逻辑**:当鼠标右键点击某个物品时,触发量恢复操作,并同步更新 Slider 的数值。 --- ### 解决方案 以下是完整的解决方案代码及其说明: #### 1. 创建一个脚本来处理鼠标右键点击和量恢复逻辑 ```csharp using UnityEngine; using UnityEngine.UI; public class MouseRightClickHeal : MonoBehaviour { public GameObject targetObject; // 被点击的目标物体 public Slider healthSlider; // 控件 private float maxHealth = 100f; // 最大生命值 private float currentHealth; // 当前生命值 void Start() { if (healthSlider != null) healthSlider.maxValue = maxHealth; // 设置最大值 ResetHealth(); // 初始化健康状态 } void Update() { if (Input.GetMouseButtonDown(1)) // 检测鼠标右键点击 { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.collider.gameObject == targetObject) // 判断是否点击到了指定目标 { HealTarget(); } } } } void HealTarget() { if (currentHealth < maxHealth) { currentHealth += Time.deltaTime * 50f; // 每帧增加一定比例的生命值 if (currentHealth > maxHealth) currentHealth = maxHealth; // 不超过最大值 if (healthSlider != null) healthSlider.value = currentHealth; // 更新UI上的显示 } } void ResetHealth() { currentHealth = maxHealth / 2f; // 初始化为一半的最大生命值 if (healthSlider != null) healthSlider.value = currentHealth; } } ``` #### 2. 将脚本挂载到场景中的合适对象上 - 创建一个新的空 Game Object 并将其命名为 `GameManager`。 - 将上述脚本附加到该对象上。 - 在 Inspector 界面中配置 `targetObject` 和 `healthSlider` 参数: - `targetObject`: 设定为希望被点击并恢复量的游戏对象。 - `healthSlider`: 拖入已经创建好的 Slider 组件。 #### 3. 添加 Slider 组件至 Canvas - 打开 Unity 编辑器,在 Hierarchy 中创建一个 Canvas 对象。 - 在 Canvas 下添加一个 Slider(可以通过右键菜单 -> UI -> Slider 完成)。 - 自定义 Slider 外观样式,例如颜色、宽度等。 #### 4. 测试运行效果 单击 Play 运行项目后尝试以下操作: - 使用鼠标右键点击设定为目标 (`targetObject`) 的游戏对象。 - 查看 Slider 是否随时间逐渐上升表示量正在恢复。 --- ### 关键点解析 - **射线投射机制**: 使用 `Physics.Raycast` 方法能够精准定位当前鼠标所指向的世界坐标下的碰撞体[^1]。这一步骤对于确认玩家意图至关重要。 - **动态调整量**: 基于每帧的时间间隔(`Time.deltaTime`)来平滑改变角色的生命值而非一次性跳跃式增长[^2]。这样可以让视觉体验更加流畅自然。 - **UI 同步更新**: 一旦修改了内部变量(currentHealth),立即通知对应的 UI 元素(Slider)刷新其外观表现形式[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值