unity--添加可以计分的ui系统

本文介绍了如何在Unity游戏中给Ground层上锁以防止意外选择,优化碰撞检测,添加UI组件显示计数,以及使用Rigidbody和MonoBehaviour实现玩家移动和碰撞响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给Ground加一个层并上锁

防止选择灯光或者别的时候将ground一起选上。

先add一个然后选择ground层。接下来在layers处进行上锁。

先改变碰撞,可持续检测。

我没有加第一张图的步骤,加上我的障碍物会到ground上跳动一下。

Continuous:

更加精细的碰撞,很耗费资源。这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使用Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞就会连续检测了。

减少固定时间长度:

增加ui组件

我们在hierarchy里添加一个text就会出现下图所示:

可以改变大小和型号,字体比较多,但是你第一次看见的只有一个,那我们就要添加进来字体。

可以在电脑里增加字体

选中字体然后拖进去,那我们在font处就可以改变自己想要的字体了。 

代码 


using UnityEngine;
using UnityEngine.UI;

public class PlayerMovement : MonoBehaviour
{
   public Rigidbody rb;
    public float forwardForce = 2000f;
    public float sideWaysForce = 500f;
    bool leftPressed;//布尔值判断是否
    bool rightPressed;
    public Text score;//得分

    void Start()
    {
       // rb.AddForce(0, 200, 500);
        //rb.useGravity = false;
    }

    
    void Update()//每帧都运行,输入部分放置在这里
    {
        leftPressed = Input.GetKey("a");
        rightPressed= Input.GetKey("d");
        score.text = transform.position.z.ToString("0");//使得计数只有一位
    }
    private void FixedUpdate()//物理类型
    {
        rb.AddForce(0, 0, forwardForce * Time.deltaTime);//均衡不同电脑帧率,forwardForce控制前进速度
        if (Input.GetKey("d"))
        {
            rb.AddForce(sideWaysForce * Time.deltaTime, 0, 0,ForceMode.VelocityChange);//siderWaysForce控制左右速度,可以在面板上改变。

        }
        if (Input.GetKey("a"))
        {
            rb.AddForce(-sideWaysForce * Time.deltaTime, 0, 0,ForceMode.VelocityChange);
        }
    }
    
   
    private void OnCollisionEnter(Collision collision)
    {
        //Debug.Log("We hit Something");
        //判断条件if
        if (collision.gameObject.tag == "Obstacle")
        {
            //停止
            this.enabled = false;//类让他停下,禁止
            rb.isKinematic = true;//碰到障碍物时候停止,可代表角色的死亡
            Time.timeScale = 0;//时间停止
           // rb.Sleep();//不可以,使用这个x轴还在动

        }
    }
}

在面板处将text拖进去

ok,这个主要就是添加了ui

这个主要就是将计数只有一位,如果我们改成0.0,那计数就会出现两位数字。

score.text = transform.position.z.ToString("0");

结果例图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值