unity像素鸟实现

简介: unity像素鸟实现

之前已经写过几篇用unity写的小游戏博客,感觉还不错,那么我就继续写下去。 今天写的是像素鸟。

image.png

这个像素鸟小游戏玩法也简单,就是点击屏幕,然后小鸟会往上飞一下,不然就会往下掉。然后过程中会有各种水管,我们需要穿越水管,然后得分。

image.png

先看场景对象有什么,这里面有bg01也就是背景,然后gameover也就是游戏失败时候会弹出来的背景框。ready就是准备动作。bird是鸟。roads是管道。score是显示分数。

image.png

再来看看对象都写了哪些?其实基本上每一个游戏主题都挂上了相应的游戏脚本。其中最重要的肯定是bird脚本,这是控制鸟主角的动作的。


    // Use this for initialization
    void Start () {
        body = gameObject.GetComponent<Rigidbody2D>();
        initPos = gameObject.transform.position;
    }
    
    // Update is called once per frame
    void Update () {
        if(Input.GetButtonDown("Fire1")){
            body.AddForce(force);
        }
    }

    public void reset() {
        body.isKinematic = true;
        gameObject.transform.position = initPos;
        gameObject.transform.eulerAngles = Vector3.zero;
        GetComponent<Animator>().enabled = true;
    }

鸟的动作主要是有三个函数,一开始在start函数里面得到鸟的刚体和位置。在游戏逻辑update中当按下了“Fire1”键,也就是电脑的鼠标左键时候,鸟作为刚体就会往上增加一个力,这个力是为了让鸟有一个向上的跳动。注意,这里必须要让鸟是刚体,他才会受力的。

最后是reset()函数,也就是重新配置鸟的位置,欧拉角,动画等属性而已。


    public void gen() {
        zhuzi[0].SetActive(true);
        zhuzi[1].SetActive(true);
        Vector3 p = zhuzi[0].transform.localPosition;
        float vv = Random.value;
        p.y = Mathf.Lerp(down, upper, vv);
        zhuzi[0].transform.localPosition = p;

        p = zhuzi[1].transform.localPosition;
         vv = Random.value;
        p.y = Mathf.Lerp(down, upper, vv);
        zhuzi[1].transform.localPosition = p;
    }

上面这段代码是写柱子的随机生成,其实就是随机生成柱子的位置。这里面只管了生成。

    void Update () {
         Vector3 pos = trans.position;
        pos.x -= speed * Time.deltaTime;
        trans.position = pos;
        if(pos.x <= -1.6f - 3.35f*idx) {
            Vector3 pp = roads[idx%2].transform.position;
            pp.x += 3.35f;
            idx++;
            roads[idx%2].transform.position = pp;
            if(isBegin){
                roads[idx%2].GetComponent<roadGen>().gen();
            }
        }
    }

然后这一段代码写的是柱子的移动。其实看起来是鸟在动,其实鸟一直在中心的位置没有变化,而是柱子一直在向左移动。

这个是一个比较基础简单的游戏实例,有兴趣学unity的话,可以关注公众号:诗一样的代码,留言给我,我教你系统地学。

相关文章
|
5月前
|
数据可视化 图形学
Unity射线编程详解
Unity射线编程详解
|
8月前
|
C++ 计算机视觉 Python
C++ VS OpenGL绘制教室三维立体旋转图像
C++ VS OpenGL绘制教室三维立体旋转图像
77 0
C++ VS OpenGL绘制教室三维立体旋转图像
|
10月前
Photoshop制作空心圆柱体与立体烟缸
Photoshop制作空心圆柱体与立体烟缸
85 0
|
iOS开发 MacOS Windows
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
529 0
Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例
|
图形学 开发者
Unity3D刚体
Unity3D刚体
135 0
|
编解码 前端开发 定位技术
零基础教你Unity制作像素鸟游戏
保姆级教程,刚入门的小白也能看懂的文章。一文教你零基础制作Unity板像素鸟游戏
573 0
零基础教你Unity制作像素鸟游戏
|
图形学
Unity 3D中的射线与碰撞检测
创建一条射线Ray需要指明射线的起点(origin)和射线的方向(direction)。这两个参数也是Ray的成员变量。注意,射线的方向在设置时如果未单位化,Unity 3D会自动进行单位归一化处理。
4350 0
|
图形学 索引
Unity3D 物体运动小游戏
目录 一、在Hierarchy窗口中创建场景,之后塑造一个平面作为地板,将元件命名为background。再创建一个正方体,命名为player。
1146 0