unity2D小游戏---飞翔的小鸟

一、柱子的移动

1.制作柱子:新建空物体,包含上方柱子,下方柱子和空物体(用于计算得分)
在这里插入图片描述
在这里插入图片描述
2.给柱子和空物体加上适合大小的碰撞体
空物体需要勾选上Is Trigger
在这里插入图片描述
3.柱子的移动(把代码给柱子)

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

public class BarrierMove : MonoBehaviour
{
    public Vector3 BarrierPos;//柱子的位置
    public float Posy;//最后位置
    void Start()
    {
    }
    void FixedUpdate()
    {
        //如果柱子的x轴位置小于最终位置
        if (transform.position.x < Posy)
        {
            float y = Random.Range(200, 400);//随机生成一个数字作为高度
            Vector3 height = new Vector3(0, y, 0);
            transform.position = BarrierPos + height;//柱子的位置加上随机的高度
        }
        transform.Translate(Vector3.right * -3f);//使柱子向后移动
    }
}

根据图片位置设置
在这里插入图片描述

二、小鸟的控制

1.给柱子添加tag
在这里插入图片描述
给柱子中间的空物体添加tag
在这里插入图片描述
2.给小鸟添加碰撞体和刚体
在这里插入图片描述

3.代码(给小鸟)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Bird : MonoBehaviour
{
    public bool flag = true;
    public int score = 0;
    public Text text;//得分
    private void FixedUpdate()
    {
        float y = Input.GetAxis("Vertical");//得到y轴
        Vector3 speed = new Vector3(0, y, 0);
        GetComponent<Rigidbody2D>().velocity = speed * 500;//给它y方向上的力
        //如果flag=false,游戏暂停
        if(!flag)
        {
             Time.timeScale = 0;
        }
    }
    //通过柱子
    public void OnTriggerExit2D(Collider2D collision)
    {
        if(collision.tag== "through")
        {
            score++;
            Debug.Log(score);
            text.text = "分数:" + score;
        }
    }
    //碰到柱子,游戏结束
    public void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.tag == "barrier")
        {
            flag = false;
            Debug.Log("游戏结束");
        }
    }
}

三、游戏暂停开始

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Timescale : MonoBehaviour
{
    public Button pause;
    public Button resume;
    void Start()
    {
    }
    void Update()
    {
        
    }
    public void _Pause()
    {
        //游戏暂停
        Time.timeScale = 0;
    }
    public void _Resume()
    {
        //游戏运行性
        Time.timeScale = 1;
    }
}
  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个简单的Unity 2D小游戏示例: 1. 创建一个新的Unity项目,选择2D模板。 2. 在场景中创建一个玩家对象,可以使用Unity提供的Sprite或者自己导入。 3. 添加一个脚本组件到玩家对象上,用于控制玩家移动。示例代码如下: ``` using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 5f; private void Update() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); transform.position += new Vector3(horizontal, vertical, 0f) * speed * Time.deltaTime; } } ``` 4. 在场景中创建一些障碍物对象,同样可以使用Unity提供的Sprite或者自己导入。 5. 添加一个脚本组件到障碍物对象上,用于检测玩家是否与障碍物碰撞。示例代码如下: ``` using UnityEngine; public class Obstacle : MonoBehaviour { private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { Debug.Log("Game Over!"); // TODO: 处理游戏结束逻辑 } } } ``` 6. 在场景中添加一些道具对象,同样可以使用Unity提供的Sprite或者自己导入。 7. 添加一个脚本组件到道具对象上,用于处理玩家与道具的交互。示例代码如下: ``` using UnityEngine; public class Item : MonoBehaviour { public int score = 10; private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { Debug.Log("Get Score!"); // TODO: 处理得分逻辑 Destroy(gameObject); } } } ``` 8. 在场景中添加一个计分器对象,用于显示玩家当前的得分。 9. 添加一个脚本组件到计分器对象上,用于处理得分逻辑。示例代码如下: ``` using UnityEngine; using UnityEngine.UI; public class Score : MonoBehaviour { public Text scoreText; private int score = 0; private void Start() { UpdateScore(); } public void AddScore(int value) { score += value; UpdateScore(); } private void UpdateScore() { scoreText.text = "Score: " + score.ToString(); } } ``` 10. 修改Item脚本,在玩家与道具交互时调用计分器对象的AddScore方法。示例代码如下: ``` using UnityEngine; public class Item : MonoBehaviour { public int score = 10; private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { Debug.Log("Get Score!"); GameObject.FindObjectOfType<Score>().AddScore(score); Destroy(gameObject); } } } ``` 11. 运行游戏,使用键盘上下左右控制玩家移动,收集道具得分,避免碰到障碍物。 以上就是一个简单的Unity 2D小游戏示例,你可以根据自己的想法进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值