当前位置: 首页 > news >正文

Unity 三维场景的搭建 软件构造实验报告

实验2:仿真系统功能实现

1.实验目的

(1)熟悉在Unity中设置仿真场景;

(2)熟悉在Unity中C#语言的使用;

(3)熟悉仿真功能的实现。

2.实验内容

新建一个仿真场景,完成下列功能:

(1)使用Unity的基本建模功能设置一些三维场景(自行发挥想象,进行建模设计)

(2)实现漫游功能,可以在场景中键盘控制前后左右移动,鼠标控制旋转,完成基本的场景漫游功能。(自行设计)

(3)使用射线,实现获取鼠标的点击功能。(自行设计)

(4)制作内部动画,配合鼠标点击,实现播放动画。(自行设计)

(5)设置触发器,当漫游相机进到入触发器中时,执行动画的播放。(自行设计)

(6)添加背景音乐和鼠标点击的音效(自行设计)

(7)添加UI按钮设计,要求可以返回主控界面。(自行设计)

(8)打包,生成可执行文件,要求可执行文件脱离Unity环境后,能够自行运行。

3.实验步骤

第一步:构建三维向量

创建一个新的场景用来构建三维场景

接着添加地面

接着,可以通过对象中自带的组件去改变地形

通过组件中自带的功能 可以调整地形,构建出自己需要的地势

接着,通过增加树木花草等,构建出基本的三维场景

这里我使用的是另一种方法,可以去素材商城中添加一下免费的素材,可以方便搭建场景。

第二步:实现漫游功能

将该代码附加加需要控制的物体上,即可实现控制物体移动。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Component1 : MonoBehaviour
{GameObject obj;public float floSpeed = 10;public float floRotate = 100;void Start(){//第三人称视角跟随Camera.main.transform.SetParent(this.transform);Camera.main.transform.localPosition = new Vector3(0, 3, -4);Camera.main.transform.localEulerAngles = new Vector3(6, 0, 0);}     }void Update(){move();look();}private void look(){float y = Input.GetAxis("Mouse X") * floRotate * Time.deltaTime;transform.Rotate(transform.up, y);}private void move(){   float x =Input.GetAxis("Horizontal") *floSpeed* Time.deltaTime;float z =Input.GetAxis("Vertical") *floSpeed* Time.deltaTime;transform.Translate(x, 0, z);}
}

第三步:使用射线,获得鼠标点击功能

当点击地面时候,返回地面的坐标。

第四步:制作内部动画,配合鼠标点击,实现播放动画

可以通过右键--->Create创建一个Animation

为了方便后面的动画设计,我们这里导入一个素材

 通过设置动画执行顺序 和条件,完成捡东西动画的制作

第五步:添加背景音乐

右键--->Audio  添加一个音乐组件

导入音乐素材,拖入Audio组件中

通过按B去设置背景音乐的播放private void playMusic(){if (Input.GetKey(KeyCode.B)){if(ads.isPlaying){ads.Pause();}else{ads.Play();}}}
通过ZX去调节音量大小private void changeVolume(){if (Input.GetKey(KeyCode.Z)){ads.volume--;}else if (Input.GetKey(KeyCode.X)){ads.volume++;}}

第六步:添加UI按钮设计,要求可以返回主控界面。

添加UI button按钮,设计一个返回按钮

编辑代码,当点击按钮时候 跳转到登录的场景

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;             //新版
using UnityEngine.UI;    //旧版GUI命名空间
using System;
using UnityEngine.SceneManagement;public class Component11 : MonoBehaviour
{public Button button;// Start is called before the first frame updatevoid Start(){button.onClick.AddListener(ClickButton);}// Update is called once per framevoid ClickButton(){SceneManager.LoadScene(0);}
}

http://www.lryc.cn/news/239274.html

相关文章:

  • 2024贵州大学计算机考研分析
  • Spring高级bean的实例化方法
  • Vue2系列 — 渲染函数 (render + createElement)
  • 加载SSL证书
  • redis 非关系型数据库
  • Python配置与测试利器:Hydra + pytest的完美结合
  • 5.基于飞蛾扑火算法(MFO)优化的VMD参数(MFO-VMD)
  • 爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”
  • 055-第三代软件开发-控制台输出彩虹日志
  • Os-hackNos-3
  • 时序预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的时间序列预测
  • LeetCode:307. 区域和检索 - 数组可修改(树状数组 C++)
  • 909-2015-T3
  • 【云原生】初识 Service Mesh
  • 常见的8个JMeter压测问题
  • 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛
  • 羊大师教你如何有效解决工作中的挑战与压力?
  • 【性能测试】稳定性/并发压力测试的TPS计算+5W并发场景设计...
  • 人工智能的时代---AI的影响
  • LeetCode 每日一题 2023/11/13-2023/11/19
  • Leetcode——169 多数元素
  • vue中原生H5拖拽排序_拖拽图片也是同样的道理
  • 【C语言】计算实时太阳角度(高度角、方位角),以及使用stm32单片机实时获取时间戳
  • 创建git仓库
  • 19.悲观锁与乐观锁解析
  • C语言--给出一个点的坐标判断它在单位圆的内部外部还是上面
  • 变频器基础问答集21-50
  • OpenCvSharp从入门到实践-(01)认识OpenCvSharp开发环境搭建
  • OSG文字-渐变文字(4)
  • 排查生产环境:MySQLTransactionRollbackException数据库死锁