Unity小项目__打砖块

news2025/2/26 22:07:57

//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; // 直接给一个速度
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-Perl - unshift函数

描述 此函数按顺序将LIST中的元素放在ARRAY的开头。这与shift()相反。 语法 以下是此函数的简单语法- unshift ARRAY, LIST返回值 此函数返回ARRAY中新元素的数量。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -warray ( 1, 2, 3, 4);print "Value of a…

关于svg

1.svg是一种基于XML语法的图像格式&#xff0c;是一种图像格式&#xff0c;是一种对图像的描述&#xff0c;不是基于像素处理的&#xff0c;因此他的本质是文件&#xff0c;而且体积小不易失真。 2.svg文件可以直接插入网页&#xff0c;也就是html文件中&#xff0c;成为dom的…

批量爬虫采集完成任务

批量爬虫采集是现代数据获取的重要手段&#xff0c;然而如何高效完成这项任务却是让许多程序员头疼的问题。本文将分享一些实际操作价值高的方法&#xff0c;帮助你提高批量爬虫采集的效率和专业度。 目标明确&#xff0c;任务合理划分&#xff1a; 在开始批量爬虫采集前&…

带你快速认识Java异常和bug的解决过程

一 常见异常介绍 1.1 编译时异常 1. 操作数据库产生的异常 SQLException 2. 操作文件产生的异常 IOException 3. 文件找不到的异常 FileNotFoundException 4. 类找不到异常 ClassNotFoundException 5. 非法参数异常 IllegalArguementException 1.2 运行时异常 1. 空指针异…

ONNX版本YOLOV5-DeepSort (rknn版本已经Ready)

目录 1. 前言 2. 储备知识 3. 准备工作 4. 代码修改的地方 5.结果展示 1. 前言 之前一直在忙着写文档&#xff0c;之前一直做分类&#xff0c;检测和分割&#xff0c;现在看到跟踪算法&#xff0c;花了几天时间找代码调试&#xff0c;看了看&#xff0c;展示效果比单纯的检…

linux--链表动态创建

头插法&#xff1a; 核心代码&#xff1a; s->next head->next; head->next s; 尾插法 核心代码&#xff1a; tail head; s->next NULL; tail->next s; tail s; 当用头插法依次插入值分别为1,2,3,4,5的结点后&#xff0c; 单链表顺序为&#xff1a; he…

第一章 Java反射机制(韩顺平老师Java基础学习记录)

文章目录 前言一、没有反射机制前的java代码存在什么问题&#xff1f;二、使用反射机制解决问题1.加载类2.读入数据 总结 前言 每一项新技术以及新概念的提出都是源于存在着新“问题”&#xff0c;放在代码领域可以说是存在着新需求&#xff0c;那么为了解决这个需求&#xff…

谈谈无线充电技术

目录 1.无线充电的概念 2.无线充电的原理 3.无线充电技术的发展过程 4.无线充电的优势 5.无线充电的潜在危害 1.无线充电的概念 无线充电是一种无需通过物理连接&#xff0c;通过电磁感应或者共振等技术&#xff0c;实现设备充电的方式。它消除了传统有线充电中需要插拔电…

等保案例 7

用户简介 廊坊市审计局主管全市审计工作&#xff0c;负责对全市财政收支和法律法规规定属于审计监督范围的财务收支的真实、合法和效益进行审计监督&#xff1b;对审计、专项审计调查和核查社会审计机构相关审计报告的结果承担责任&#xff0c;并负有督促被审计单位整改的责任…

docker oracle linux命令执行sql

docker 安装参照 https://blog.csdn.net/arcsin_/article/details/123707618 docker container ls -a命令查看容器名 打开容器 docker exec -it orcl19c_03 /bin/bashsys 用户登录容器 sqlplus / as sysdbashow pdbs;什么是pdb数据库&#xff1f;什么是CDB&#xff1f; 参…

推进深度融合 打造智慧媒体

以下内容来自于易知微官网&#xff0c;点击一下&#xff0c;即可进入官网了解详情。 注意&#xff1a;案例数据均为虚拟数据 数字改革是一场波及经济社会发展全局、涵盖生产力到生产关系的全方位变革。在数字化时代&#xff0c;以数字改革赋能媒体深度融合已然成为时代所向、…

github以及上传代码处理

最近在github上传代码的时候出现了&#xff1a; /video_parser# git push -u origin main Username for https://github.com: gtnyxxx Password for https://gtny2010github.com: remote: Support for password authentication was removed on August 13, 2021. remote: Plea…

LeetCode450. 删除二叉搜索树中的节点

450. 删除二叉搜索树中的节点 文章目录 [450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/)一、题目二、题解方法一&#xff1a;递归&#xff08;一种麻烦的方法&#xff09;方法二&#xff1a;优化后的递归 一、题目 给定一个二叉搜索树的根…

AJ-Captcha行为验证在vue中的使用

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a;由原先的验证码校验升级为行为验证校验 使用方法 提示&#xff1a;参考文档&#xff1a; 参考文档&#xff1a;vue使用AJ-Captcha文档 gitee地址&#xff1a;AJ-Captcha &…

【Apollo】Apollo版本变迁里程碑

特点与改进 概述里程碑6.0版本特点及改进7.0版本特点及改进8.0版本特点及改进代码差异 主页传送门&#xff1a;&#x1f4c0; 传送 概述 Apollo (阿波罗)是一个开放的、完整的、安全的平台&#xff0c;将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统&#xff0c;快…

python3ide手机安卓版下载,python3下载手机安卓版

本篇文章给大家谈谈python3ide手机安卓版下载&#xff0c;以及python3下载手机安卓版&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 python3是一个在Android上运行Python3脚本引擎&#xff0c;python3整合了Python3解释器、Console、编辑器和SL4A库PHP与PYT…

智慧城市能实现嘛?数字孪生又在其中扮演什么角色?

数字孪生智慧城市是将数字孪生技术与城市智能化相结合的新兴概念&#xff0c;旨在通过实时数字模拟城市运行&#xff0c;优化城市管理与服务&#xff0c;创造更智能、高效、可持续的城市环境。 在智慧城市中&#xff0c;数字孪生技术可以实时收集、分析城市各个方面的数据&…

如何安装合适的显卡驱动,如何安装合适的驱动

大家好&#xff0c;小编为大家解答如何安装合适的松紧裤腰大房子呢的问题。很多人还不知道如何安装合适的显卡驱动版本&#xff0c;现在让我们一起来看看吧&#xff01; 1.准备好安装包 1&#xff09;上python官网下载python运行环境&#xff08;Download Python | Python.org&…

seaborn color palette 调色板颜色图

Here is a list of the Color Brewer palettes, with their names for easy reference: sns.lineplot(datanormal_df, palettesns.color_palette(paletteSet1, n_colors1))

KaiwuDB CTO 魏可伟:回归用户本位,打造“小而全”的数据库

8月16日&#xff0c;KaiwuDB 受邀亮相第十四届中国数据库技术大会 DTCC 2023。KaiwuDB CTO 魏可伟接受大会主办方的采访&#xff0c;双方共同围绕“数据库架构演进、内核引擎设计以及不同技术路线”展开深度探讨。 以下是采访的部分实录 ↓↓↓ 40 多年前&#xff0c;企业的数…