Unity的学习(二):打砖块

一、新建项目

在这里插入图片描述

创建成功后,进入了如下界面。
在这里插入图片描述

二、场景的设计

在Hierarchy中鼠标右键创建Plane(地面)游戏物体,将其Transform组件重置,并将游戏物体重命名为Ground,如下图所示。
在这里插入图片描述

调整地面的大小。
在这里插入图片描述

在Assets下创建文件夹Materials,并在其中创建Ground的Material(材质)并在Ground(地面)游戏物体上设置材质。如下图所示。(Smoothness为光滑度)
在这里插入图片描述

三、创建砖块和砖块的prefab(预制体)

右键创建Cube,并给该游戏物体添加Rigidbody(刚体)组件,然后创建在Assets下创建Prefabs文件夹,将Cube拖入到Prefabs文件夹下将Cube游戏物体设置为prefab(预制体)。如下图所示。
在这里插入图片描述

Rigidbody:当游戏物体添加了刚体组件,会有物理效果,如重力。
prefab:预制体,相当于模板,当修改预制体时,由此prefab生成的实例也会进行相同的变化。

四、创建墙

通过预制体来创建墙,在Unity中距离的单位为米,而Cube的长度为1,即是1米,当移动时,我们可以按住ctrl键然后通过按住箭头来移动固定的距离。创建墙如下图所示。
在这里插入图片描述

五、创建子弹

通过预制体来创建子弹的实例,因为子弹会有很多个,所以需要用到预制体,并且通过代码来控制子弹的生成。创建子弹如下图所示。
在这里插入图片描述

六、创建C#脚本

在Assets下创建Scripts文件夹,并且创建命名为Shoot的C#脚本文件,然后将脚本文件拖入Main Camera作为一个脚本组件。如下图所示。
在这里插入图片描述

七、子弹的生成

打开Shoot脚本,并定义一个属性public GameObject bullet;,保存,回到Unity,可以看到Main Camera游戏物体中的脚本组件出现了变化,这时可以将Prefabs中的Sphera预制体拖入其中,给其赋值。具体如下图所示。
在这里插入图片描述

在Shoot的Update方法中加入实例化代码用于控制子弹的生成。

// 每帧调用一次
    void Update() {
        //Input.GetMouseButtonDown(0):鼠标左键按下
        if (Input.GetMouseButtonDown(0)) {
            //transform:当前脚本所在游戏物体的transform组件
            //transform.position:这里取得的是当前游戏物体(Camera)的位置
            //transform.rotation:当前游戏物体的旋转角度
            GameObject.Instantiate(bullet, transform.position, transform.rotation);//生成bullet实例
        }
    }

此时运行,点击左键,观察Hierarchy发现,有Sphere实例生成。如下图所示。但是观察Game视图发现,子弹并没有发射出去。
在这里插入图片描述

八、给子弹生成初速度,使其能够发射出去。

我们可以通过Rigidbody(刚体)来给子弹施加速度,这样就可以发射了。
在这里插入图片描述
在Shoot中定义一个属性public float speed=5;
并在Update方法中获取Rigidbody组件,并赋予向前的速度。

//获得Rigidbody(刚体)
Rigidbody rgd = b.GetComponent<Rigidbody>();
//给其赋一个向前的初速度
rgd.velocity = transform.forward * speed;

这时我们运行下看看效果,如下图所示。
在这里插入图片描述
通过运行,我们发现,相机的距离过近需要调整相机距离,并且子弹发射出去进行了翻滚,我们可以通过锁定它的y轴来让它不进行翻滚。如下图所示。
在这里插入图片描述

九、控制相机的上下左右移动

创建C#脚本Movement,并将其挂载到Main Camera上。如下图所示。
在这里插入图片描述

在Movement脚本中添加属性public float speed = 3;
并且在Update方法中添加上下左右移动代码

void Update() {
        //获取左右键的按下
        float h = Input.GetAxis("Horizontal");

        //获取上下键的按下
        float v = Input.GetAxis("Vertical");
        //移动
        //Time.deltaTime:时间修正值
        transform.Translate(new Vector3(h, v, 0) * Time.deltaTime * speed);
    }

十、运行

对子弹速度进行一个调整。
在这里插入图片描述

运行效果如下图所示。
在这里插入图片描述

十一、代码

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

public class Shoot : MonoBehaviour {

    public GameObject bullet;

    public float speed = 5;

    // 在第一帧更新之前调用Start
    void Start() {
        
    }

    // 每帧调用一次
    void Update() {
        //Input.GetMouseButtonDown(0):鼠标左键按下
        if (Input.GetMouseButtonDown(0)) {
            //transform:当前脚本所在游戏物体的transform组件
            //transform.position:这里取得的是当前游戏物体(Camera)的位置
            //transform.rotation:当前游戏物体的旋转角度
            GameObject b=GameObject.Instantiate(bullet, transform.position, transform.rotation);//生成bullet实例

            //获得Rigidbody(刚体)
            Rigidbody rgd = b.GetComponent<Rigidbody>();
            //给其赋一个向前的初速度
            rgd.velocity = transform.forward * speed;
        }
    }
}

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

public class Movement : MonoBehaviour {

    public float speed = 3;

    // Start is called before the first frame update
    void Start() {

    }

    // Update is called once per frame
    void Update() {
        //获取左右键的按下
        float h = Input.GetAxis("Horizontal");

        //获取上下键的按下
        float v = Input.GetAxis("Vertical");
        //移动
        //Time.deltaTime:时间修正值
        transform.Translate(new Vector3(h, v, 0) * Time.deltaTime * speed);
    }
}

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打砖块Cocos源码是一种运用Cocos引擎开发的经典街机游戏,类似于《打砖块》,玩家需要控制一个板子来反弹一个小球,将砖块逐个击碎。以下是关于打砖块Cocos源码的简要介绍。 打砖块Cocos源码使用Cocos引擎进行开发,该引擎是一种跨平台的开源游戏引擎,具有丰富的功能和易于使用的界面,使得游戏开发更加简便。源码采用了面向对象的编程思想,通过构建不同类和对象的关系,来实现游戏的各种功能。 源码主要由游戏场景、精灵、物理引擎等组成。游戏场景是整个游戏的基础框架,包括游戏背景、游戏开始和结束界面等。精灵是游戏中的各个元素,如板子、小球、砖块等,通过精灵可以实现这些元素的移动、碰撞等功能。物理引擎是为了实现游戏中的真实物理效果,通过加入重力、碰撞等物理特性,提高游戏的真实性和灵活性。 在源码中,板子、小球和砖块之间通过碰撞检测实现,当小球与砖块碰撞时,会根据碰撞点和碰撞角度计算反弹方向和速度。当小球与板子碰撞时,会改变小球的运动方向。通过控制板子的移动,玩家可以改变小球的运动轨迹,尽可能击碎更多的砖块。 此外,源码还有计分系统、关卡设置等功能。在游戏过程中,每当击碎一个砖块,玩家会得到相应的分数。同时,游戏设有多个关卡,每个关卡设置有不同的砖块布局和难度,玩家需要逐个通关,挑战自己的反应能力和技巧。 总而言之,打砖块Cocos源码是一个基于Cocos引擎开发的经典街机游戏,通过控制板子与小球的运动,玩家需要击碎所有砖块并获得高分。源码使用了Cocos引擎的各种功能,例如场景、精灵和物理引擎,使得游戏具有真实可靠的物理效果,同时提供了计分系统和关卡设置,增加了游戏的挑战性和娱乐性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值