使用Unity引擎制作弹珠移动游戏、物体消失以及UI显示物体消失个数

一、入门的弹珠移动游戏

在Unity中制作弹珠移动游戏非常简单。首先,创建一个新的3D项目,并添加一个球体(Sphere)对象作为玩家控制的弹珠。为了能够让弹珠移动,我们需要添加一个Rigidbody组件,并勾选“Is Kinematic”选项。

unity点击物体出现UI界面示例_unity点击物体出现UI界面示例

创建一个新的C#脚本,命名为“qiuyidon”,并将其附加到小球对象上。在脚本中,我们可以添加一些代码来控制小球的移动。例如,使用键盘输入来控制小球的移动方向和速度。

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;public class qiu : MonoBehaviour
 {
     public Rigidbody rg;
     // Start is called before the first frame update
     void Start()
     {
         rg = GetComponent<Rigidbody>();
     }    // Update is called once per frame
     void Update()
     {
         float h = Input.GetAxis("Horizontal");
         float v = Input.GetAxis("Vertical");
         rg.AddForce(new Vector3(h, 0, v));    }
     private void OnCollisionEnter(Collision collision)
     {
         Debug.Log("开始发生");
     }
     private void OnCollisionStay(Collision collision)
     {
         Debug.Log("持续发生");
     }
     private void OnCollisionExit(Collision collision)
     {
         Debug.Log("结束碰撞");
     }
 }


 

二、用于控制角色在场景中的移动、跳跃和得分。当按下特定的按键时,角色会向前或向后移动,向上跳跃,并与食物进行碰撞以增加分数。触发器碰到的物体标签为"food",则销毁该物体,增加分数,当分数达到13分时,会显示胜利条件。

using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;public class Move : MonoBehaviour
 {
     // 定义文本对象用于显示分数
     public Text fenshu;
     // 初始化分数为0
     public int score = 0;
     // 定义胜利条件显示对象
     public GameObject shengli;
     // 获取角色的刚体组件
     private Rigidbody rg;
     // 判断角色是否在地面上
     private bool isground = false;
     // 获取角色的Transform组件
     private Transform player;
     // Start方法在第一个帧更新之前被调用
     void Start()
     {
         rg = GetComponent<Rigidbody>();
         player = transform;
     }    // Update方法每帧被调用一次
     void Update()
     {
         // 如果按下左Shift键且W键,则向前移动5个单位
         if (Input.GetKey(KeyCode.LeftShift))
         {
             if (Input.GetKey(KeyCode.W))
             {
                 player.Translate(Vector3.forward * 5.0f * Time.deltaTime);
             }
         }
         // 如果W键未按下,则向前移动3个单位
         else
         {
             if (Input.GetKey(KeyCode.W))
             {
                 player.Translate(Vector3.forward * 3.0f * Time.deltaTime);
             }
         }        // 如果按下S键,则向后移动3个单位
         if (Input.GetKey(KeyCode.S))
         {
             player.Translate(Vector3.back * 3.0f * Time.deltaTime);
         }
         // 如果按下A键,则向左移动3个单位
         if (Input.GetKey(KeyCode.A))
         {
             player.Translate(Vector3.left * 3.0f * Time.deltaTime);
         }
         // 如果按下D键,则向右移动3个单位
         if (Input.GetKey(KeyCode.D))
         {
             player.Translate(Vector3.right * 3.0f * Time.deltaTime);
         }        // 如果空格键被按下且角色在地面上,则向上施加200牛顿力
         if (Input.GetKeyDown(KeyCode.Space) && isground)
         {
             rg.AddForce(Vector3.up * 200);
         }
     }    // OnTriggerEnter方法在触发器进入碰撞区域时被调用
     private void OnTriggerEnter(Collider other)
     {
         // 如果触发器碰撞到的对象标签为"food",则销毁该对象并增加分数
         if (other.gameObject.tag == "food")
         {
             Destroy(other.gameObject);
             score++;
             fenshu.text = "分数:" + score; // 更新分数显示文本
             // 如果分数达到13,激活胜利条件显示对象
             if (score == 13)
             {
                 shengli.SetActive(true);
             }
         }
     }    // OnCollisionEnter方法在角色与物体发生碰撞时被调用
     private void OnCollisionEnter(Collision collision)
     {
         // 如果碰撞到的对象标签为"ground",则将isground设置为true
         if (collision.collider.tag == "ground")
         {
             isground = true;
         }
     }    // OnCollisionExit方法在角色离开物体碰撞区域时被调用
     private void OnCollisionExit(Collision collision)
     {
         // 如果离开的物体标签为"ground",则将isground设置为false
         if (collision.collider.tag == "ground")
         {
             isground = false;
         }
     }
 }

添加标签

unity点击物体出现UI界面示例_c#_02

添加ui,点击右键ui添加文本。按住AIT+鼠标点击右上角ui

unity点击物体出现UI界面示例_unity点击物体出现UI界面示例_03

unity点击物体出现UI界面示例_c#_04

写“分数”

unity点击物体出现UI界面示例_unity_05