Unity3D制作3D虚拟漫游场景(二)
传送门:
Unity3D制作3D虚拟漫游场景(一)
--------------------------------------------------------------------------
昨天已经完成了场景的基本搭建,今天先简单的实现城市漫游功能,具体细节之后再进行添加
1.导入人物
在Assets文件夹下,新建一个文件夹,用于存放预制体,命名为Prefabs
打开昨天导入进去的SimplePeople资源包,打开其中的示例场景,然后我们可以进去挑选人物啦~
博主在这里选了一个画风清奇,很像程序员的一个人物“SimplePeople_BusinessMan_White”,选中,并将其拖放到Prefabs文件夹下
这样人物就准备就绪了。
2.设置场景
回到游戏场景(我命名的是“GameScene”),全选所有的地形(摄像机暂时除外),道路啊建筑啊,统一加上组件“MeshCollider”,方便与人物碰撞
3.将人物放置于场景
拖拽Prefabs文件夹里的人物到Scene视图,并为其添加CharacterController,设置属性如下
找到人物的位置,点击运行,可能会发现人物往下掉,这是因为刚才添加MeshCollider的时候,部分折叠的没有被添加上去,我们手动添加。
(报了很多错误,不过以前没有出现,并且错误暂时不影响游戏运行,最近会找一下原因所在,大家也可以在评论区指点一下,人多力量大^_^)
这时候人物就不会掉下去了,但是我们会发现,没有办法控制人物的移动,这就需要添加脚本进行控制了。
4.控制人物移动
在Scripts文件夹下,新建一个C#脚本,命名为“CharacterControl.cs”,代码如下
1 using UnityEngine; 2 using System.Collections; 3 4 public class CharacterControl : MonoBehaviour 5 { 6 //控制速度 7 public float moveSpeed = 10.0f; 8 public float rotateSpeed = 1.0f; 9 public float jumpSpeed = 4.0f; //跳跃速度 10 public float gravity = 1; //重力拉扯 11 12 private bool isMainPlayer = false; 13 private Animator personAnimator; 14 private CharacterController cc; 15 16 public bool isJump; 17 private bool isMove; 18 19 private CollisionFlags flags; 20 21 private Vector3 moveDirection; 22 23 24 // Use this for initialization 25 void Start() 26 { 27 if (this.gameObject.tag == "Player") 28 { 29 isMainPlayer = true; 30 cc = this.GetComponent<CharacterController>(); 31 } 32 personAnimator = gameObject.GetComponent<Animator>(); 33 } 34 35 // Update is called once per frame 36 void Update() 37 { 38 //如果当前脚本的对象是游戏者 39 if (isMainPlayer) 40 { 41 //控制移动或旋转 42 float h = Input.GetAxis("Horizontal"); 43 float v = Input.GetAxis("Vertical"); 44 h *= Time.deltaTime * moveSpeed; 45 v *= Time.deltaTime * moveSpeed; 46 transform.Translate(h, 0, v); 47 transform.Rotate(0, h * rotateSpeed, 0); 48 49 //FIX THIS BUG:无法后退,因为还没有设置后退的动画 50 if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1f) 51 { 52 personAnimator.SetFloat("Speed_f", moveSpeed); 53 } 54 55 else 56 { 57 personAnimator.SetFloat("Speed_f", 0); 58 } 59 60 61 62 63 //按下空格跳跃 64 //两种跳跃情况:原地跳和一边跑一边跳(脑补出表情包...) 65 if (Input.GetKeyDown(KeyCode.Space) && !isJump) 66 { 67 personAnimator.SetBool("Jump_b", true); 68 69 isJump = true; 70 moveDirection = transform.TransformDirection(moveDirection); 71 moveDirection.y = jumpSpeed; 72 73 } 74 else if (Input.GetKeyUp(KeyCode.Space)) 75 { 76 personAnimator.SetBool("Jump_b", false); 77 } 78 79 //if (isJump) 80 ///{81 //模拟重力 82 moveDirection.y -= gravity * Time.deltaTime; 83 flags = cc.Move(moveDirection * Time.deltaTime); 84 85 //when hit the ground 86 if (flags == CollisionFlags.Below) 87 { 88 isJump = false; 89 } 90 // } 91 } 92 93 } 94 }
接下来把脚本赋给人物,需要注意的就是,这段代码是根据Tag去判断是否为游戏者的(因为后期可能会添加一些自由移动的NPC),所以需要把人物的Tag设置为Player。
进入游戏,发现人物可以移动了,不过摄像机还不会跟随人物移动。
5.设置摄像机跟随
unity5.x的摄像机脚本与4有不同之处,所以我们先选一种简单的方法。
首先将Hierarchy中_Scene下的摄像机拖动到人物下。
设置摄像机属性如图
现在就可以漫游了。接下来就是控制动画的播放以及其他的细节处理了。
转载于:https://www.cnblogs.com/sc2015/p/5697805.html
Unity3D制作3D虚拟漫游场景(二)相关推荐
- Unity3D制作3D虚拟漫游场景(一)
开始前先说一些题外话,本来这个工程是已经完成了超过一半了,然而由于手残重装了系统不小心删除了,现在只好再做一遍了.顺便写一下博供今后写代码参考. 这是一款使用unity3D开发的虚拟城市漫游游戏,实际 ...
- 虚幻4 虚拟漫游场景 制作过程
先看看渲染效果. 虚幻场景中的物品其实也需要全部由3Dmax制作好导入 虚幻由于有一部分是动态光影,还需要预渲染,所以模型的面数要尽可能降低. 原来3000多个面降到41个面. 3Dmax自身渲染的话 ...
- unity3d制作自己简单游戏场景
下面演示一下如何用unity3d制作一个自己的游戏场景 1. 导入环境资源 Assets -> import packet -> environments 2. 新建terrain 3.在 ...
- Unity3d游戏开发之漫游场景的制作
Unity3d中场景漫游的制作. 1. 首先在3d软件中准备好模型,我找了个maya制作的房子. 注意:我这里用的是真实世界的比例,旁边测量工具测量的是1000cm,10米高. 2. 导 ...
- 【Unity3d】3d网页游戏场景打包与加载
http://www.mysjtu.com/page/M0/S716/716482.html 3d游戏中 一个场景往往斗劲大 若是游戏的进行须要下载一个10M甚至更大的场景时 加载所用的时候会导致很大 ...
- Unity3D 建筑类 虚拟漫游 PC 端 优化
一:Mesh.Masterial 量的问题(影响最大.最基础) 二:遮挡剔除(本方法 功能针对的是整个场景渲染,Adding 模式下,只对第一个场景起作用,所以 设置渲染只能在第一个场景中Bake) ...
- 全景虚拟漫游技术实现(three.js vs ThingJS) Javascript 3D开发 前端 物联网 webgl 三维建模 3D模型 虚拟 全景
三维建模无非就是通过专业技能加工成立体图形,使之图形成为直观.易懂,容易判读的立体图件.对于开发者来说,选择一个好的3D开发框架,在全景虚拟漫游场景上实现3D动效,ThingJS vs three.j ...
- 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画
# Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...
- dw如何制作图片自动切换效果_什么是3D虚拟展厅,虚拟展厅如何在线3D漫游!
昨天小迪分享了什么是3D虚拟展厅,今天小迪将继续分享,虚拟展厅是如何在线3D漫游!以及web3d虚拟展厅技术呈现的,具体模块及功能描述(一): 什么是3D虚拟展厅,虚拟展厅如何在线3D漫游! 1.lo ...
最新文章
- 【JavaScript总结】JavaScript语法基础:JS高级语法
- three.js 弹出二维图片
- 在linux中如何高效的使用帮助
- 主要的窗体控件的概述
- Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)
- 去掉 Idea 中注入 Mapper 警告的方法
- iOS - Easy Custom View
- 【学习】009 NIO编程
- Examine Scheduling Policies
- unity3D 5中如何修改及显示Text的值
- 【10月17日】2020年十月蓝桥杯A组题目【感想与总结】(热乎的)
- rest api 可选参数_可选类型API
- 【CodeForces - 1084D】The Fair Nut and the Best Path (树形dp)
- C++匿名函数Lambda
- java代码查询索引文件实例_关于使用pdfbox的对PDF文件通过lucene生成索引文件IndexPDFFiles类代码示例...
- MYSQL GDB 崩溃调试
- 类的继承与派生的基础学习
- 华南理工大学811信号与系统真题
- 计算机专业英语大作业,专业英语大作业
- mac版ps快捷键大全
热门文章
- python进入目录 cd_Linux cd命令:切换目录
- 胶囊网络中挤压函数Squash的实现(tensorflow和pytorch)
- 西门子博图指令(定时器操作二)
- win10如何修改C盘User下的用户名
- java 获取星期_java中如何获取日期时间中的星期几?
- 美国心理求助电话暴涨10倍,斯坦福AI聊天机器人抚慰受伤心灵
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170315
- 怎么开发联机小游戏_惊!!!个人游戏开发者的福音来了!
- 机器学习 --基础入门介绍 他来啦!!!
- 伽玛函数(Gamma函数)C++实现