IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 第二个项目 Nymph Find Money (对第一项目的创新) -> 正文阅读

[游戏开发]第二个项目 Nymph Find Money (对第一项目的创新)

简介

第二个项目 Nymph Find Money 是对第一个项目的创新,并独立创作。

项目的构思
1、将小鸟换成一个美少女
2、从在天上飞变为地上跑
3、地上会出现障碍
4、由鼠标控制变为键盘控制,并限制跳跃的次数
5、增加金币,让美少女吃到并加分

第一步 场景创建

在这里插入图片描述
新建叫ground的背景,然后添加碰撞器 ,并将添加新图层,将背景设为默认图层

第二步 美少女创建

在这里插入图片描述
新建Player的游戏物体,然后给 Player 添加碰撞器与刚体。

第三步 动画创建

在这里插入图片描述
在这里插入图片描述

第四步 代码编写

public class CoinPools : MonoBehaviour
{

    public  GameObject prefabs;

    Queue<GameObject> pools;

    public float interval = 3f;

    public int Poolsize = 20;

    public static CoinPools instance;

    public int x;
    public int y;


    private void Awake()
    {
        instance = this;
        
    }

    void Start()
    {
        pools = new Queue<GameObject>();
        for (int i=0; i < Poolsize; i++)
        {
            GameObject coin = Instantiate(prefabs);
            coin.SetActive(false);
            pools.Enqueue(coin);
        }
        InvokeRepeating("Spawn", interval, interval);

    }

    void Spawn()
    {
        x = Random.Range(10, 30);
      
        GameObject coin = pools.Dequeue();
        coin.SetActive(true);
        coin.transform.position = new Vector3(x, 2);
        
    }
   public void Despan(GameObject go)
    {
        go.SetActive(false);
        pools.Enqueue(go);
    }

  
  
}
public class GameControl : MonoBehaviour
{

    public GameObject TipText;
    public GameObject GameOverText;
    public GameObject Score;
    public bool IsGameOver = false;

    private int score;


    public static GameControl instance;

    private void Awake()
    {
        instance = this;
    }

    void Update()
    {
        if (IsGameOver == true&& Input.GetKeyDown(KeyCode.Space))
        {
            SceneManager.LoadScene("Main");//重新加载场景
           
        }
    }

  public  void OnGameOver()
    {
        //IsGameOver = true;
        GameOverText.SetActive(true);
        TipText.SetActive(true);
    }

   public void AddScore()
    {
        score += 1;
        Score.GetComponent<Text>().text = string.Format("{0}", score);
    }

    

}
public class ObstaclePools : MonoBehaviour
{
    public  static GameObject Prefabs;
    public static GameObject Prafab_1;
    public  static GameObject Prefab_02;
    public float interval = 4f;

    public Queue<GameObject> pools;

    public static ObstaclePools instance;

    public GameObject[] ObstacleListPrefab = new GameObject[3] { Prefabs, Prafab_1, Prefab_02 };

    public int poolsize=20;

    private void Awake()
    {
        instance = this;
    }

    void Start()
    {
        pools = new Queue<GameObject>();
       
        if (GameControl.instance.IsGameOver != true)
        { for (int i = 0; i < poolsize; i++)
        {
            var id = Random.Range(0, 2);
            GameObject ob = Instantiate(ObstacleListPrefab[id]);
            ob.SetActive(false);
            pools.Enqueue(ob);
        }
            InvokeRepeating("Spawn", interval, interval);
        }
        
    }
    void Spawn()
    {
        GameObject ob = pools.Dequeue();
        ob.SetActive(true);
        ob.transform.position =new  Vector3(20, -1, 0);
    }
  public  void Despawn(GameObject go)
    {
        go.SetActive(false);
        pools.Enqueue(go);
    }
  
   
}

public class Scrolling : MonoBehaviour
{
    Rigidbody2D rd2d;
    float Startpos;//起始位置
    public  float width;
    public float ScrollSpeed = -3;
    public bool destory = false;

    void Start()
    {
        rd2d = GetComponent<Rigidbody2D>();
        rd2d.velocity = new Vector2(ScrollSpeed, 0);
        if (width == 0)
        {
            width = GetComponent<BoxCollider2D>().size.x;
        }
        
      
        Startpos = transform.position.x;
    }

 
    void Update()
    {

        if (GameControl.instance.IsGameOver == true)
        {
            rd2d.velocity = Vector2.zero;
            return;
        }

        if (Startpos - transform.position.x >= width)
        {
            if (destory == true)
            {
                ObstaclePools.instance.Despawn(this.gameObject);
                CoinPools.instance.Despan(this.gameObject);
            }
            else
            {
                
            Vector3 pos = transform.position;
            pos.x = Startpos;
            transform.position = pos;
            }
        }
    }
}

public class Player : MonoBehaviour
{
    bool IsDead = false;
    Rigidbody2D rd2d;
    KeyCode key=KeyCode.Space;
 
    Animator anim;

    public float timer = 1.0f;//定时器



    private void Start()
    {

        anim = GetComponent<Animator>();
        anim.SetTrigger("Run");
       
    }

    void Update()
    {
        timer -= Time.deltaTime;
        anim = GetComponent<Animator>();
        rd2d=GetComponent<Rigidbody2D>();

      

        if (Input.GetKeyDown(key))
        {
            if (timer <= 0)//定时器控制跳跃的次数,以限制二节跳
            {
              rd2d.velocity = Vector2.zero;
              rd2d.AddForce(new Vector2(0, 300));
              anim.SetTrigger("Jump");
              timer = 2.0f;

            }
        }
     
        
    }

    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.gameObject.tag == "Obstacle")
        {
               GameControl.instance.IsGameOver = true;
             GameControl.instance.OnGameOver();

        }
     
         
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        GameControl.instance.AddScore();
        collision.gameObject.SetActive(false);
      
    }

}
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:15:32  更:2022-04-18 18:19:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 15:07:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码