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 updatevoid Start(){// transform.Translate(Vector3.up); // 开始游戏时控制相机向上移动1m}// Update is called once per framevoid 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 updatevoid Start(){// transform.Translate(Vector3.up); // 开始游戏时控制相机向上移动1m}// Update is called once per framevoid 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 updatevoid Start(){// 根据prefab创建实例(实例化Prefab),克隆物体// GameObject.Instantiate(bulletPrefab, transform.position, transform.rotation);}// Update is called once per framevoid 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.mzph.cn/news/48149.shtml

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

相关文章

vue3 基础知识 (组件之间的通信 and vuex) 02

侬好哇 &#xff01;&#x1f60d; 文章目录 一、组件的通信 &#xff08;父传子&#xff09;二、非 Prop 的Attribute (属性&#xff09;三、组件的通信 &#xff08;子传父&#xff09;四、非父子组件的相互通信&#xff08;Provide/Inject&#xff09;五、非父子组件的相互通…

高教杯数学建模2020C题总结

&#x1f9e1;1. 前言&#x1f9e1; 跟队友花了三天模拟2020C题&#xff0c;现在整理一下一些数据处理的代码&#xff0c;以及在模拟中没有解决的问题。方便以后回溯笔记。 &#x1f9e1;2. 数据处理&#x1f9e1; 2.1 导入数据&#xff0c;并做相关预处理 import pandas a…

更改计算机睡眠时间

控制面板–>系统和安全–>电源选项下的更改计算机睡眠时间 如果关闭显示器时间小于使计算机进入睡眠状态时间&#xff0c;时间先到达关闭显示器时间&#xff0c;显示器关闭&#xff0c;这时电脑还在正常工作状态。如果此时敲击键盘显示器出现画面&#xff0c;无需输入密…

【云原生】3分钟快速在Kubernetes1.25部署Prometheus2.42+Grafana9.5.1+Alertmanager0.25

文章目录 1、简介2、GitHub地址3、环境信息4、安装5、访问Grafana1、简介 Prometheus-operator帮助我们快速创建Prometheus+Grafana+Alertmanager等服务,而kube-prometheus更加完整的帮助我们搭建全套监控体系,这包括部署多个 Prometheus 和 Alertmanager 实例, 指标导出器…

Php“牵手”淘宝商品SKU信息数据采集方法,淘宝API接口申请指南

淘宝天猫商品属性sku信息接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片&#xff0c;销量&#xff0c;sku信息等信息。在电商平台的开发中&#xff0c;商品属性接口API是非常常用的 API&#x…

Lnton羚通算法算力云平台【PyTorch】教程:torch.nn.Softsign

torch.nn.Softsign 原型 CLASS torch.nn.Softsign() 图 代码 import torch import torch.nn as nnm nn.Softsign() input torch.randn(4) output m(input)print("input: ", input) print("output: ", output)# input: tensor([ 0.0046, -0.4135, -2…

智慧健康杂志智慧健康杂志社智慧健康编辑部2023年第15期目录

智慧医疗 医疗信息化 提高病案首页填写质量&#xff0c;体现病案信息利用价值 张明芳; 1-4 经支气管镜检查联合针吸活检术在肺癌诊断中的临床应用价值 邱洪亮; 5-8 高频超声对距腓前韧带损伤的诊断价值 梁劲松;叶绮婷;曹肖维; 9-12《智慧健康》投稿邮箱&#xff1a…

学习笔记 --- RabbitMQ

简介 RabbitMQ是一款开源的消息队列中间件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;标准。作为一个消息代理&#xff0c;RabbitMQ可以在应用程序之间可靠地传递和存储消息&#xff0c;并支持多种消息传递模式。 基本概念和特性 消息&#xff1a;在R…

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-CNN-BiGRU-Attention多特征分类预测&#xff0c;多特征输入模型&…

MemSeg:一种差异和共性来检测图像表面缺陷的半监督方法

目录 1、摘要 2、Method 2.1 模拟异常样本 2.2 Memory Module 2.3 空间注意模块 2.4 多尺度特征融合模块 2.5 损失函数设置 2.6 Decoder模块 1、摘要 本文认为人为创建类内差异和保持类内共性可以帮助模型实现更好的缺陷检测能力&#xff0c;从而更好地区分非正常图像。如…

分布式核心知识以及常见微服务框架

分布式中的远程调用 在微服务架构中&#xff0c;通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分&#xff1a;序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等&#xff0c;目前主流的远程调用技术有基于HTTP…

【运筹优化】贪心启发式算法和蜘蛛猴优化算法求解连续选址问题 + Java代码实现

文章目录 一、问题描述二、思路分析三、解决方案3.1 贪心启发式算法3.2 群体智能算法&#xff08;蜘蛛猴优化算法&#xff09; 四、总结 一、问题描述 选址问题是指在规划区域里选择一个或多个设施的位置&#xff0c;使得目标最优。 按照规划区域的结构划分&#xff0c;可以将…

spring异步框架使用教程

背景 在需求开发过程中&#xff0c;为了提升效率&#xff0c;很容易就会遇到需要使用多线程的场景。这个时候一般都会选择建一个线程池去专门用来进行某一类动作&#xff0c;这种任务到来的时候往往伴随着大量的线程被创建调用。而还有另外一种场景是整个任务的执行耗时比较长…

系统架构设计师-信息安全技术(2)

目录 一、安全架构概述 1、信息安全所面临的威胁 二、安全模型 1、安全模型的分类 2、BLP模型 3、Biba 模型 4、Chinese Wall模型 三、信息安全整体架构设计 1、WPDRRC模型 2、各模型的安全防范功能 四、网络安全体系架构设计 1、开放系统互联安全体系结构 2、安全服务与安…

万字长文带你快速了解整个Flutter开发流程

文章目录 背景1.简介与优势Flutter是什么&#xff1f;为什么选Flutter&#xff1f; 2.开发环境搭建安装Flutter SDK配置开发环境 3.创建项目项目结构概览&#xff1a; 4.UI 构建与布局什么是Widget&#xff1a;StatelessWidget和StatefulWidget&#xff1a;Widget的组合&#x…

Java开发面试题 | 2023

Java基础 接口和抽象类的区别&#xff1f;Java动态代理HashMap 底层实现及put元素的具体过程currenthashmap底层实现原理&#xff1f;map可以放null值吗&#xff0c;currenthashmap为什么不能放null值synchronze和reetrantlock区别&#xff1f;怎样停止一个运行中的线程&#…

机器学习笔记 - 使用 AugMix 增强图像分类模型的鲁棒性

一、简述 图像分类模型能够预测与训练数据具有相同分布的数据。然而,在现实场景中,输入数据可能会发生变化。例如,当使用不同的相机进行推理时,照明条件、对比度、颜色失真等可能与训练集不同,并显着影响模型的性能。为了应对这一挑战,Hendrycks 等人提出了 AugMix 算法。…

IP地址SSL证书

在许多企业用例中&#xff0c;公司需要SSL证书作为IP地址。公司使用IP地址通过Internet或Intranet访问各种类型的应用程序。根据组织策略&#xff0c;您希望使用SSL证书保护IP地址。 在本文中&#xff0c;我将向您解释获取IP地址SSL证书的过程&#xff0c;以及哪种类型的SSL证…

实验二 Hdoop2.7.6+JDK1.8+SSH的安装部署与基本操作

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…

Web和云开发,Rust会起飞?

Web和云开发&#xff0c;Rust会起飞&#xff1f; 一、前言 二、大厂偏爱&#xff0c;Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web&#xff1f; 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 一、前言 去年…