Unity小项目__打砖块

//1.添加地面

1)创建一个平面,命名为Ground。

2)创建一个Materials文件夹,并在其中创建一个Ground材质,左键拖动其赋给平面Plane。

 

 3)根据喜好设置Ground材质和Ground平面的属性。

 

// 2.创建墙体

1)创建一个Cube,命名为Brick,并拖曳至设置的Prefab文件夹作为预制体。

 

 2)在Materials文件夹中创建一个Brick材质,操作同1.2),1.3)

3)网格与捕捉设置,  设置好后可利用Ctrl加鼠标拖动步移物体。或点亮带磁铁的标记,直接移动物体。

// 设置预制体后的Brick 

4)全选:一直按住Shift点击Brick到Brick(10) 或直接在图形界面选中物体,Ctrl+D(复制粘贴),向上拖动。

 5)创建一个空物体对象作为上一层文件夹(父类)。

 

 // 3.控制游戏物体左右移动

1)创建一个Movement脚本控制相机的移动

 

 

 2)创建一个Script文件夹,放置脚本文件

 // Movement脚本

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

public class Movement : MonoBehaviour
{
    public int speed = 1; // 定义一个属性,用于控制速度
    // Start is called before the first frame update
    void Start()
    {
       // transform.Translate(Vector3.up); // 开始游戏时控制相机向上移动1m
    }

    // Update is called once per frame
    void Update() // 每秒执行的频率不固定
    {
        float h = Input.GetAxis("Horizontal"); // h:通过按下A、D键来控制移动
        float v = Input.GetAxis("Vertical"); // V:通过按下W、S键来控制移动
        transform.Translate(new Vector3(h, v, 0) * speed * Time.deltaTime); // h:控制水平方向x轴的移动;v:控制上下方向y轴的移动
        // 默认h,v为一帧一米,Time.deltaTime为一帧的秒数,speed可看作为速度的倍数——>每秒的速度*倍数

        // 检测帧率
        // Debug.Log(Time.deltaTime); // 获取上一帧的时间,一帧的秒速
        // Debug.Log(1 / Time.deltaTime); // FPS frame per second,每秒执行的帧数
    }

    //private void FixedUpdate() // 每秒执行的频率固定
    //{
    // Debug.Log(Time.deltaTime); // 获取上一帧的时间,一帧的秒速
    // Debug.Log(1 / Time.deltaTime); // FPS frame per second,每秒执行的帧数
    //}
}

// 4.创建小球

1)建立一个Sphere命名为Bullet,并鼠标拖曳至Prefab文件夹作为预制体,删除Bullet实体。

 

 2)建立子弹脚本

 // 定义一个游戏物体:子弹预制体

public GameObject bulletPrefab; //  定义一个游戏物体:子弹预制体

// 通过鼠标拖曳预制体Bullet指定对象

5.判断鼠标按下并创建子弹

// 脚本

    void Update()
    {
        // if(true)——>运行{代码},否则跳过
        if (Input.GetMouseButtonDown(0)) // 在用户按下给定鼠标按钮的那一帧内返回true。0 ——>鼠标左键
        {
            GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation);
        }
    }

// 给预设体Bullet设置刚体组件(和创建脚本一样)

 // 运行

 6.发射子弹

// 方案一:使用AddForce方法,施加力

    void Update()
    {
        // if(true)——>运行{代码},否则跳过
        if (Input.GetMouseButtonDown(0)) // 在用户按下给定鼠标按钮的那一帧内返回true。0 ——>鼠标左键
        {
            GameObject bullet = GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation); // 设置一个bullet接受克隆的一个游戏物体
            Rigidbody rd = bullet.GetComponent<Rigidbody>(); // 得到bullet身上的<刚体>组件

            // 施加力的方案
            // 方案一,不方便观察速度
            rd.AddForce(Vector3.forward * 80); // 默认施加一个向前的1N的力 * 80
        }
    }

// 方案二:直接给一个速度

rd.velocity = Vector3.forward * 35; // 直接给一个速度

 

 7.墙壁物理模拟

// 给预设体Brick添加刚体

 // 全代码参考

// Movement

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

public class Movement : MonoBehaviour
{
    public int speed = 1; // 定义一个属性,用于控制速度
    // Start is called before the first frame update
    void Start()
    {
       // transform.Translate(Vector3.up); // 开始游戏时控制相机向上移动1m
    }

    // Update is called once per frame
    void Update() // 每秒执行的频率不固定
    {
        float h = Input.GetAxis("Horizontal"); // h:通过按下A、D键来控制移动
        float v = Input.GetAxis("Vertical"); // V:通过按下W、S键来控制移动
        transform.Translate(new Vector3(h, v, 0) * speed * Time.deltaTime); // h:控制水平方向x轴的移动;v:控制上下方向y轴的移动
        // 默认h,v为一帧一米,Time.deltaTime为一帧的秒数,speed可看作为速度的倍数——>每秒的速度*倍数

        // 检测帧率
        // Debug.Log(Time.deltaTime); // 获取上一帧的时间,一帧的秒速
        // Debug.Log(1 / Time.deltaTime); // FPS frame per second,每秒执行的帧数
    }

    //private void FixedUpdate() // 每秒执行的频率固定
    //{
    // Debug.Log(Time.deltaTime); // 获取上一帧的时间,一帧的秒速
    // Debug.Log(1 / Time.deltaTime); // FPS frame per second,每秒执行的帧数
    //}
}

 // Shoot

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

public class Shoot : MonoBehaviour
{
    public GameObject bulletPrefab; //  定义一个游戏物体:子弹预制体
    // Start is called before the first frame update
    void Start()
    {
        // 根据prefab创建实例(实例化Prefab),克隆物体
        // GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation);
    }

    // Update is called once per frame
    void Update()
    {
        // if(true)——>运行{代码},否则跳过
        if (Input.GetMouseButtonDown(0)) // 在用户按下给定鼠标按钮的那一帧内返回true。0 ——>鼠标左键
        {
            GameObject bullet = GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation); // 设置一个bullet接受克隆的一个游戏物体
            Rigidbody rd = bullet.GetComponent<Rigidbody>(); // 得到bullet身上的<刚体>组件

            // 施加力的方案
            // 方案一,不方便观察速度
            //rd.AddForce(Vector3.forward * 80); // 默认施加一个向前的1N的力 * 80
            // 方案二
            rd.velocity = Vector3.forward * 35; // 直接给一个速度
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/79620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Simulink的Chaos混沌电路设计与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 07_001m 4.算法理论概述 混沌电路是一类特殊的非线性电路&#xff0c;其输出信号表现出无规律…

数字后端笔试题(1)DCG后congestion问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 已知某模块的DCG结果显示存在congestion&#xff0c;有congestion部分逻辑结构如下图: 问题1: 如何分析该电路有congestion问题的原因&#xff1f; 答&#xff1a;data selecti…

基于STM32+FreeRTOS的四轴机械臂

目录 项目概述&#xff1a; 一 准备阶段&#xff08;都是些废话&#xff09; 二 裸机测试功能 1.摇杆控制 接线&#xff1a; CubeMX配置&#xff1a; 代码&#xff1a; 2.蓝牙控制 接线&#xff1a; CubeMX配置 代码&#xff1a; 3.示教器控制 4.记录动作信息 5.执…

el-table 多个表格切换多选框显示bug

今天写了个功能&#xff0c;点击左侧的树做判断&#xff0c;一级树节点显示系统页面&#xff0c;二级树节点显示数据库页面&#xff0c;三级树节点显示表页面。 数据库页面和表页面分别有2个el-table ,上面的没有多选框&#xff0c;下面的有多选框 现在出现bug&#xff0c;在…

Linux学习之iptables过滤规则的使用

cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810&#xff0c;uname -r看到内核版本是3.10.0-957.el7.x86_64&#xff0c;iptables --version可以看到iptables版本是v1.4.21。 iptables -t filter -A INPUT -s 10.0.0.8 -j ACCEPT会在最后一行插入。 10…

winform 封装unity web player 用户控件

环境&#xff1a; VS2015Unity 5.3.6f1 (64-bit) 目的&#xff1a; Unity官方提供的UnityWebPlayer控件在嵌入Winform时要求读取的.unity3d文件路径&#xff08;Src&#xff09;必须是绝对路径&#xff0c;如果移动代码到另一台电脑&#xff0c;需要重新修改src。于是考虑使…

Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)

Hadoop学习&#xff1a;深入解析MapReduce的大数据魔力之数据压缩&#xff08;四&#xff09; 4.1 概述1&#xff09;压缩的好处和坏处2&#xff09;压缩原则 4.2 MR 支持的压缩编码4.3 压缩方式选择4.3.1 Gzip 压缩4.3.2 Bzip2 压缩4.3.3 Lzo 压缩4.3.4 Snappy 压缩4.3.5 压缩…

Apache JMeter

下载 Apache JMeter 并安装 java链接 打开 apache-jmeter-5.4.1\bin 找到jmeter.bat 双击打开 或者 ApacheJMeter.jar 双击打开 设置中文 找到 options 》choose Language 》chinese 新建 计划 创建线程组 添加Http请求 配置元件添加请求头参数&#xff08;content-type&…

腾讯云 CODING 荣获 TiD 质量竞争力大会 2023 软件研发优秀案例

点击链接了解详情 8 月 13-16 日&#xff0c;由中关村智联软件服务业质量创新联盟主办的第十届 TiD 2023 质量竞争力大会在北京国家会议中心召开。本次大会以“聚焦数字化转型 探索智能软件研发”为主题&#xff0c;聚焦智能化测试工程、数据要素、元宇宙、数字化转型、产融合作…

报名开启 | HarmonyOS第一课“营”在暑期系列直播

<HarmonyOS第一课>2023年再次启航&#xff01; 特邀HarmonyOS布道师云集华为开发者联盟直播间 聚焦HarmonyOS 4版本新特性 邀您一同学习赢好礼&#xff01; 你准备好了吗&#xff1f; ↓↓↓预约报名↓↓↓ 点击关注了解更多资讯&#xff0c;报名学习

CS:GO升级 Linux不再是“法外之地”

在前天的VAC大规模封禁中&#xff0c;有不少Linux平台的作弊玩家也迎来了“迟到”的VAC封禁。   一直以来&#xff0c;Linux就是VAC封禁的法外之地。虽然大部分玩家都使用Windows平台进行游戏。但实际上&#xff0c;使用Linux畅玩CS:GO的玩家也不在少数。 以前V社主要打击W…

LVS - DR

LVS-DR 数据流向 客户端发送请求到 Director Server&#xff08;负载均衡器&#xff09;&#xff0c;请求的数据报文&#xff08;源 IP 是 CIP,目标 IP 是 VIP&#xff09;到达内核空间。Director Server 和 Real Server 在同一个网络中&#xff0c;数据通过二层数据链路层来传…

商城-学习整理-高级-商城业务-商品上架es(十)

目录 一、商品上架1、sku在ES中存储模型分析2、nested数据类型场景3、构造基本数据&#xff08;商品上架&#xff09; 二、首页1、项目介绍2、整合thymeleaf&#xff08;spring-boot下模板引擎&#xff09;渲染页面3、页面修改不重启服务器实时更新4、渲染二级三级数据 三、搭建…

「UG/NX」Block UI 面收集器FaceCollector

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

LeetCode150道面试经典题-- 求算数平方根(简单)

1.题目 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 2.示例 …

【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍

文章目录 1、IoU2、GIoU(Generalized Intersection over Union)3、DIoU4、CIoU 1、IoU IoU为交并比&#xff0c;即对于pred和Ground Truth&#xff1a;交集/并集 1、IoU可以作为评价指标使用&#xff0c;也可以用于构建IoU loss 1 - IoU 缺点&#xff1a; 2、对于pred和GT相…

机器学习|DBSCAN 算法的数学原理及代码解析

机器学习&#xff5c;DBSCAN 算法的数学原理及代码解析 引言 聚类是机器学习领域中一项重要的任务&#xff0c;它可以将数据集中相似的样本归为一类。DBSCAN&#xff08;Density-Based Spatial Clustering of Applications with Noise&#xff09;是一种是一种经典的密度聚类…

博客系统之单元测试

对博客系统进行单元测试 1、测试查找已存在的用户 测试名称 selectByUsernameTest01 测试源码 //查找用户&#xff0c;存在 Test public void selectByUsernameTest01 () { UserDao userDao new UserDao(); String ret1 userDao.selectByUsername("张三").toStr…

全开放式耳机什么品牌好?全开放式耳机推荐

​在音乐的世界中&#xff0c;开放式耳机提供了更真实、更通透的音质体验&#xff0c;开放式耳机采用不入耳设计&#xff0c;佩戴更为稳固舒适&#xff0c;还允许外界的声音自由地流入&#xff0c;使你在享受音乐的同时&#xff0c;也能保持对周围环境的感知&#xff0c;户外运…

自动驾驶卡车量产-第一章-用户需求

1、中国干线物流行业现状 万亿级市场&#xff0c;规模巨大。由中重卡承运的干线运输占到整体公路货运市场的82%&#xff0c;全国中重卡保有量约730 万台1&#xff0c;市场规模达4.6 万亿元1&#xff0c;体量全球第一&#xff0c;超过同城物流及乘用出租市场规模之和。同样&…