本科课程【虚拟现实引擎Unity3D】实验2 - 复杂地形穿越
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。
如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!!
Good better best, never let it rest, until good is better, and better best.近期会把自己本科阶段的一些课程设计、实验报告等分享出来,供大家参考,希望对大家有帮助。
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html
一、 实验目的
二、 实验内容
1. 实验任务
自己搭建一个有障碍或陷阱等元素的地形,有玩家在地形中穿越的出发点及终点,在穿越过程中碰到障碍或掉入陷阱则视为穿越失败一次,玩家自动回到出发点重新开始穿越。失败次数超过某个设定值或到达终点,都结束一次游戏过程,相应显示成功或失败的相关统计信息(如用时,失败次数等)并可重新开始新的一次游戏。玩家可以是第一人称或第三人称的角色控制器。加入必要游戏对象。模型及编写有关脚本等,能通过键盘和鼠标相结合进行穿越。可根据需要增加其他内容。
2. 程序设计
1) 数据输入
初始化输入
2) 数据存储(输入数据在内存中的存储)
player存储游戏对象,forest1,forest2,forest3分别存储3个森林地形的对象,并用forests[]数组存储起来,达到三个地形重复交替出现,forest存储森林出现的次数。
3) 数据处理
//控制森林出现和消失的条件if (player.position.z > transform.position.z+100) { Camera.main.SendMessage("GenerateForest"); GameObject.Destroy(this.gameObject); }//控制森林的重复出现 public void GenerateForest() { forestCount++; int type=Random.Range(0,3); GameObject newForest=GameObject.Instantiate(forests[type],new Vector3(0,0,forestCount*3000),Quaternion.identity) as GameObject; forest1 = forest2; forest2 = newForest.GetComponent(); }
4) 数据输出
三、 实验环境
- 操作系统:WINDOWS 7及以上
- 开发工具:Unity
- 实验设备:PC
源代码
using System.Collections;using System.Collections.Generic;using UnityEngine;public class EnvGenerater : MonoBehaviour { public Forest forest1; public Forest forest2; public int forestCount = 2; public GameObject[] forests; public void GenerateForest() { forestCount++; int type=Random.Range(0,3); GameObject newForest=GameObject.Instantiate(forests[type],new Vector3(0,0,forestCount*3000),Quaternion.identity) as GameObject; forest1 = forest2; forest2 = newForest.GetComponent(); }}using System.Collections;using System.Collections.Generic;using UnityEngine;public class Tags : MonoBehaviour { public const string player = "Player";}using System.Collections;using System.Collections.Generic;using UnityEngine;public class Forest : MonoBehaviour { private Transform player; void Awake() { player = GameObject.FindGameObjectWithTag(Tags.player).transform; }// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () { if (player.position.z > transform.position.z+100) { Camera.main.SendMessage("GenerateForest"); GameObject.Destroy(this.gameObject); }}}
博客更新至专栏【课程设计实验报告】:https://blog.csdn.net/weixin_43598687/category_11640051.html