Unity3D制作3D虚拟漫游场景(二)

传送门:

Unity3D制作3D虚拟漫游场景(一)

--------------------------------------------------------------------------

昨天已经完成了场景的基本搭建,今天先简单的实现城市漫游功能,具体细节之后再进行添加

1.导入人物

在Assets文件夹下,新建一个文件夹,用于存放预制体,命名为Prefabs

打开昨天导入进去的SimplePeople资源包,打开其中的示例场景,然后我们可以进去挑选人物啦~

博主在这里选了一个画风清奇,很像程序员的一个人物“SimplePeople_BusinessMan_White”,选中,并将其拖放到Prefabs文件夹下

这样人物就准备就绪了。

2.设置场景

回到游戏场景(我命名的是“GameScene”),全选所有的地形(摄像机暂时除外),道路啊建筑啊,统一加上组件“MeshCollider”,方便与人物碰撞

3.将人物放置于场景

拖拽Prefabs文件夹里的人物到Scene视图,并为其添加CharacterController,设置属性如下

找到人物的位置,点击运行,可能会发现人物往下掉,这是因为刚才添加MeshCollider的时候,部分折叠的没有被添加上去,我们手动添加。

(报了很多错误,不过以前没有出现,并且错误暂时不影响游戏运行,最近会找一下原因所在,过几天fix吧=w=)

这时候人物就不会掉下去了,但是我们会发现,没有办法控制人物的移动,这就需要添加脚本进行控制了。

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下的摄像机拖动到人物下。

设置摄像机属性如图

现在就可以漫游了。接下来就是控制动画的播放以及其他的细节处理了。

时间: 2024-08-01 22:45:36

Unity3D制作3D虚拟漫游场景(二)的相关文章

Unity3D制作3D虚拟漫游场景(一)

开始前先说一些题外话,本来这个工程是已经完成了超过一半了,然而由于手残重装了系统不小心删除了,现在只好再做一遍了.顺便写一下博供今后写代码参考. 这是一款使用unity3D开发的虚拟城市漫游游戏,实际上博主是非常喜欢这类游戏的,在城市里面自由地去浪是多么随意的一件事(雾). 最近VR和AR莫名火起来了,然而穷到吃土,入手了Google cardboard,店家顺便附赠了蓝牙游戏遥控器,这款游戏我会在完成之后移植到VR上面进行测试. 博主家在新乡,是的没错,前几天发洪水能划船的新乡,耽误了一些时间

Unity3d游戏开发之漫游场景的制作

Unity3d中场景漫游的制作. 1.       首先在3d软件中准备好模型,我找了个maya制作的房子. 注意:我这里用的是真实世界的比例,旁边测量工具测量的是1000cm,10米高. 2.  导出fbx格式文件. 注意: 勾选光滑组输出,设置单位为厘米,Y轴朝上. 3.       新建一个unity项目: 勾选你将来要用到的引擎自带的几个资源包例如: Character Controller.unityPackage(这个里面有一个第一人称控制,一个第三人称控制.) Particles.

【Unity3d】3d网页游戏场景打包与加载

http://www.cnblogs.com/dosomething/archive/2012/04/07/2436353.html 3d游戏中  一个场景往往比较大  如果游戏的进行需要下载一个10M甚至更大的场景时  加载所用的时间会导致很大部分玩家的流失 我们知道unity3d中的内置地形是使用一张高度图  加载场景时  首先加载地形并显示  再去加载场景中的部件(比如树.房子等)  将会很有必要 在加载场景中的部件时  可以根据玩家当前所在的位置  由近到远的去加载 场景中的每个部件实际

【Unity 3D】学习笔记二十九:游戏实例——简单小地图制作

任何的学习,光看不练是学不好的.所以这次就总结回顾下怎么制作MMROPG类游戏中的小地图.在MMROPG类游戏里,主角在游戏世界里走动时,一般在屏幕右上角都会有一个区域来显示当前游戏场景的小地图.主角在游戏世界里走动,小地图里代表着主角的小标记也会随之移动.那怎么实现咧? 首先需要确定两个贴图,第一个是右上角的小地图背景贴图,应该是从Y轴俯视向下截取主角所在的位置大地图.第二个就是主角的位置大贴图.在本例中,因为没有学习unity地图制作,所以地图用一个面对象代替,主角用立方体代替,使用GUI来

unity3d学习笔记(十九)--ngui制作3d人物头顶的头像和血条

原地址:http://blog.csdn.net/lzhq1982/article/details/18793479 本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢. http://blog.csdn.net/lzhq1982/article/details/18793479 先上张图,自己做的一个demo. 这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的. 第一步,先在UI Root里制作头像和血条. 这个制作步骤基

(转)CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景

CocosCreator零基础制作游戏<极限跳跃>二.制作游戏开始场景 我们刚刚分析了<极限跳跃>这款游戏,下面我们开始制作第一个游戏场景,也就是游戏的开始场景. 首先,打开CocosCreator,新建HelloWorld项目.选择项目路径,输入项目名称"jxty",点击新建项目. 新建好项目,项目会自动打开.这里大家可以看下官方的文档,了解 下编辑器的功能和用法. 资源管理器里显示了项目资源文件夹(assets)中的所有资源.这里会以树状结构显示文件夹并自动

学习笔记:极客学院-2. Unity3D 基础操作-Scene与场景漫游

QWERT切换场景功能 Q:Scene观察视角移动 W:物体的移动 E:物体的旋转 R:物体的缩放 T: 移动旋转缩放时,按住ctrl可以定量,定量的设置在Edit-snapeSetting设置. privot:坐标基点为自身的中心 center:多选时,坐标基点为多个物体的中心 local:坐标的方向以自身为参照(xyz旋转后不一定是正的) global:坐标的方向以世界为参照 Textured WireFrame 物体边框 Textured Wire显示物体的贴图轮廓 Render Path

怎么制作vr全景漫游?

怎么制作vr全景漫游?下面就跟酷雷曼小编一起看看吧,三维实景虚拟漫游解决方案,主要用于房产楼盘.旅游景点.宾馆酒店.校园风光等场景的三维虚拟漫游效果的网上展示,可以进行多场景的真实互动,并且还可以添加热点.雷达.视频等交互元素,让观看者无需亲临现场即可获得360度身临其境的感受. 工具 全景拍摄相关设备(数码单反相机+鱼眼镜头+全景云台+三脚架) 造景师 漫游大师 步骤/方法 首先,使用全景拍摄相关设备进行鱼眼图像的拍摄工作,拍摄时请遵循全景拍摄技术要求.(详见参考资料"1.怎么样制作360度全

打造H5里的“3D全景漫游”秘籍

近来风生水起的VR虚拟现实技术,抽空想起年初完成的“星球计划”项目,总结篇文章与各位分享一下制作基于Html5的3D全景漫游秘籍. QQ物联与深圳市天文台合作,在手Q“发现新设备”-“公共设备”里,连接QQ物联摄像头为用户提供2016年天体大事件的直播,大家可以通过手Q实时观看到世界各地最佳观测点的日食,流星等天体现象.承载整个“星球计划”活动的运营页面,经多方讨论,我们决定尝试3D全景漫游模式的H5运营页进行推广,今天就不详述活动的具体内容,先和大家聊一聊这H5里“3D全景漫游”的制作方法.