投篮小游戏链接_点击屏幕投篮的游戏

(29) 2024-09-23 18:01:01

新手来看看,简单小游戏,首先先看看运行界面 ,玩法是点击鼠标左键球会跳动,进篮筐后篮筐消失,然后在另一边生成,生成的高度是随机的。   

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第1张

一,先看看场景。

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第2张

背景,篮板,上下左右都设置边界,球碰撞边界则此球出界。

1篮板设置碰撞体,由盒子型,胶囊型组成。

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第3张

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第4张

这里我设置了四个胶囊碰撞体在篮筐用于检测。

篮板,球杆设置盒子型碰撞体。

 

2.球的设置

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第5张

刚体这些设置可以自己调,限制球在x轴的移动,和在y,z的转向,把写好的脚本拉过来,刚体之类的填补。

我为球添加了子物体,用于添加粒子特效,这只是简单特效,具体炫酷特效可以自己去研究

 

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第6张

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第7张

投篮小游戏链接_点击屏幕投篮的游戏 (https://mushiming.com/)  第8张

特效很简单,自己可以琢磨做更炫酷的特效。

二,接下来看源码。

ballMovement.cs源码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ballMovement : MonoBehaviour {

    public float speedY = 10;// y轴速度
    public Rigidbody rb;
    public float speedZ = 5; //Z轴速度
    public int i = 0;   //设置变量检测球框位置
    public float mark = 0; //分数
    public int health = 5; //生命值
    
   
    void Start()
    {

        rb = GetComponent<Rigidbody>(); //获取刚体组件
       

    }
    
    void Update()
    {

        //如果按下鼠标左键或者空格键,则给球一个力为Vector3(0, speedY, speedZ);
        if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0))
        {

            rb.velocity = new Vector3(0, speedY, speedZ);
         

        }
       //更新分数
      
        GameObject.Find("Canvas").GetComponentInChildren<Text>().text = "分数:" + mark + "";
    }
   
    void OnTriggerEnter(Collider other)
     {

        //如果进球,且篮板在左边,首先加分,改变球速度z方向,然后移动球框到右边,a是移动位置y轴的随机值,同时也要把球框调转
        //debug用于调试
        //后设置i = 1,改变位置
        if (other.gameObject.name == "goal" && i == 0 )
        {

            mark -= (int)rb.velocity.y;
            speedZ = -speedZ;
            float a = Random.Range(-13f, 1.3f);
           
            GameObject.Find("BallFrame").transform.position = new Vector3(0, a, 15f);
            GameObject.Find("BallFrame").transform.Rotate(0, 180, 0);
            i = 1;
            Debug.Log(rb.velocity);
        }
        //如果进球,且篮板在右边,首先加分,改变球速度z方向,然后移动球框到左边,a是移动位置y轴的随机值,同时也要把球框调转
        //debug用于调试
        //后设置i = 0,改变位置
        else if (other.gameObject.name == "goal"&& i==1)
        {

            speedZ = -speedZ;
            float a = Random.Range(-13f, 1.3f);
            GameObject.Find("BallFrame").transform.position = new Vector3(0, a, 0.25f);
            GameObject.Find("BallFrame").transform.Rotate(0, 180, 0);
            i = 0;
            mark -= (int)rb.velocity.y;
            Debug.Log(rb.velocity.y);
        }
        //如果球出界,触碰边界,则生命值就减一。
        //球回到原位置
        //当生命值小于或者等于0时,游戏结束,消除游戏体——ball
    
        if (other.gameObject.name == "end"|| other.gameObject.name == "floor")
        {

            print("此球已经出界了");
            health--;
            GameObject.Find("ball").transform.position = new Vector3(0, 5, 13);
            if(health <= 0)
            {

                Destroy(GameObject.Find("ball"));
                GameObject.Find("Canvas").GetComponentInChildren<Text>().text = "游戏结束!";
                print("游戏结束!!");
            }

        }

    }
 
}
注释我都写在源码里面了,就不一一解释了。

到这里整个游戏就几乎完成了,剩下的一些开始界面,UI可以自己去写写,做完整。

要资源留言邮箱。

THE END

发表回复