Unity里自带的资源包里的以第一人称视角拍的av控制在什么地方

Unity(1)
1、首先打开unity3d创建一个新的。在新项目中创建Plane和Directional light平行光,Plane作为地面。
  2、在项目中导入CharacterController包。把3rd Person Controller放到Plane上。
  3、把3rd Person Controller模型上的ThirdPersonController脚本和ThirdPersonCamera脚本Remove掉。
  4、在3rd Person Controller模型上添加CharacterMotor脚本、FPSInputController脚本和MouseLook脚本。
  5、把3rd Person Controller模型上MouseLook脚本的Axes属性改为Mouse X。
& & & & & & & & &&&
  6、把Main Camera作为3rd Person Controller的子对象,调整Main Camera的位置到3rd Person Controller的头部,使Main Camera与3rd Person Controller朝向一致。
  7、在Main Camera上添加MouseLook脚本,把MouseLook脚本的Axes属性改为Mouse Y。
原文:/148.html
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38888次
积分:1722
积分:1722
排名:千里之外
原创:128篇
评论:11条
(1)(2)(4)(13)(2)(17)(18)(29)(46)(6)程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之角色控制器组件研究(二十二)
Unity3D研究院之角色控制器组件研究(二十二)
围观40121次
编辑日期: 字体:
Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作,神奇吧。使用它的方法如下,首先打开Unity游戏引擎编辑器,然后在Project视图中右键选择Import Package -& Charactr Controller(角色控制器)把它导入我们的工程中。如下图所示,第一人称与第三人称的组建已经加入Project视图中。3rd Person Controller 表示第三人称控制器,First Person Controller表示第一人称控制器。
如下图所示,我们将FirstPerson Controller拖拽入Hierarchy(层次视图)中。由于角色控制器是具有一定物理引擎的,所以一定要将它放在地形或面对象之上,否则当它接收物理效果时发现地面没有东西支撑它,它就会掉下去。然后运行游戏你就会发现和CS中的第一人称效果非常相像, W、S、A、D移动人物行走,移动鼠标更改行走的方向,空格键人物会跳跃。
第一人称视角的实现原理是在游戏场景中创建了一个胶囊体的游戏对象,并且给胶囊体对象身上绑定了一个摄像机,摄像机对象如下图所示,它绑定在”Person Controller”中。这时场景中默认的摄像机就会失效,可以直接删掉默认的摄像机。通过按键控制这个胶囊体移动,通过鼠标修改胶囊体的朝向,此时你就会发现第一人称视角已经完全实现,目前为止我们不需要编写一行代码。目前场景中的天空盒子我是使用skyBox组件绑定在摄像机中,因为第一人称视角的摄像机对象在”Person Controller”中,所以需要将SkyBox组件绑定在这个摄像机中,如果绑定在默认摄像机中那么你将不会看到天空的效果。
(点击图片查看大图)
下面我们在看看第三人称视角,如下图所示,在Project视图中将3rd Person Controller拖拽入Hierarchy视图中。第三人称视角需要使用我们原有的摄像机,如果刚刚将摄像机的删掉的话。在Hierarchy视图中点击Creat-&Camera 即可。然后选择摄像机,在右侧Inspector视图中设置它的tag为MainCamera,如下图所示。最后在Hierarchy视图中选择3rd Person Controller,在右侧Inspector视图中将Third Person Camera 脚本的 Camera Transform 变量绑定上刚刚创建的主摄像机,此时运行游戏后以第三人称视角移动主角行走与跳跃,摄像机永远都会在跟随在后面除非修改角色控制器组件中默认提供的源码,源码都在右侧监测面板视图中直接点开就可以查看。
(点击图片查看大图)
下面我们学习角色控制器组件在其它模型之间的应用。首先在Hierarchy视图中创建两个Cube(立方体对象) 命名为:Cube0(发出碰撞的对象)Cube1(接收碰撞的对象),然后在Hierarchy视图中选择Cube0对象,接着Unity导航菜单栏中选择Component(组件)-Character-&选择任意一个角色控制属性。 补充一句,角色控制器组件一定要在Project视图中导入,否则这里将无法绑定组件。角色控制器组件因为与碰撞组件相互冲突,所以添加角色控制器组建后Collider组件就会消失。下面我们实现一段简单得代码,使用添加过角色控制器组件的Cube0 去碰撞未添加角色控制器组件的Cube1。
123456789101112131415161718192021222324252627282930313233343536373839404142
using UnityEngine;using System.Collections;&public class Test : MonoBehaviour {& //主动碰撞的对象名称 string castName = null;& //接收碰撞的对象名称 string receiveName = null;& void OnGUI () &&&&{&
if(castName!= null && receiveName !=null)
//设置显示的颜色为黑色
GUI.color = Color.black;
&&&&//显示主动碰撞的对象 与接收碰撞的对象名称 &&&& GUI.Label(new Rect(100,100,200,30),"主动碰撞的对象名称"+castName); &&&& GUI.Label(new Rect(100,200,200,30),"接收碰撞的对象名称"+receiveName);
} }& //角色控制器组件在与具有Collider组件对象之间的碰撞 void OnControllerColliderHit(ControllerColliderHit hit) {&
//得到接收碰撞名称
GameObject hitObject = hit.collider.gameObject;&
//当它不是地面时间
if(!hitObject.name.Equals("Terrain"))
//得到主动碰撞的对象 与接收碰撞的对象名称
castName = gameObject.name;
receiveName = hitObject.name;
将上面这段代码绑定在Cube0中,运行游戏后W、A、S、D按键来控制Cube1立方体移动。当Cube0与Cube1发生碰撞时,程序将进入方法OnControllerColliderHit(),通过参数就可以得到接收碰撞的游戏对象也就是Cube1对象,而gameObject就是当前主动发生碰撞的Cube1。如下图所示,当两个立方体碰撞时使用GUI已经将碰撞的信息打印出来。
接着我在说说刚体组件,默认在Unity中创建的模型是不具备接收物理引擎的,除非给模型添加刚体组件或角色控制器组件。我们先说说刚体,还用奋斗的小鸟来举例子。发射小鸟以后,小鸟以一个抛物线轨迹去撞击物体,发生碰撞后被碰撞的物体会根据小鸟撞击的角度以及力度发生不同的物理效果,并且几乎是完全模拟真实的物理引擎。但是这种物理引擎的效果不能绑定在比如RPG游戏的主角身上。原因很简单,因为刚体所添加的物理引擎太过于真实以至于会影响用户的对主角的操作,举个例子比如用户在控制主角移动时他碰撞到质量较大的物体,根据真实的物理引擎会被这个物体的反弹力把主角反弹回原位。但是这个是不符合逻辑的,因为刚体组件太过于物理话了,所以我们需要给主角添加角色控制器组件,它操作起来比较灵活,更容易让我们操作主角。
下面我们给Cube1对象绑定刚体组件,选择Cube1对象然后在导航菜单栏中选择Component-&physics -&Rigidbody(刚体)。我们看看下面这段代码,使用添加了角色控制器组件的Cube0 去碰撞添加刚体组件的Cube1,当他生碰撞时计算一下Cube0碰撞Cube1时的碰撞角度向量,然后通过刚体向他施加一个力把它推开。
123456789101112131415161718192021222324
using UnityEngine;using System.Collections;&public class Test : MonoBehaviour {& //角色控制器组件在与具有Collider组件对象之间的碰撞 void OnControllerColliderHit(ControllerColliderHit hit) {&
//判断碰撞的对象是否具备刚体组件
GameObject hitObject = hit.collider.gameObject;
Rigidbody rigidbody = hitObject.rigidbody;
if(rigidbody != null && !rigidbody.isKinematic)
//地面也具备刚体组件,这里判断一下
if(!hitObject.name.Equals("Terrain") )
rigidbody.AddForce(new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z) * 10);
也可以将同样的脚本直接绑定在第三人称的角色控制器组件中。如下图所示,主角移动将周围的箱子都推开了。
总的来说角色控制器组件适用于 既需要感应物理引擎的支持但是又不能完全依赖与物理引擎,需要自己代码去编写一些东西的模型,所以非常适合游戏中主角对象的使用。雨松MOMO祝大家学习愉快,哇咔咔。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!救急!!!为什么在导入的场景设置了第一人称视角运行一直掉啊【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:71,345贴子:
救急!!!为什么在导入的场景设置了第一人称视角运行一直掉啊收藏
百度了都解决了不了问题,我都找不到模型里inspector那个Gent什么的,我那个是个scene的工程文件也不是个模型啊,总之就是加了第一视角运行的时候直接掉下去了,或者是浮在上面不能移动了,求大神帮忙!!
火星{游戏原画培训}费用性价比No1,9大专业,55门课程免费试学.还有震撼助学金计划.选择火星时代,做高端游戏设计师!现在还可享受0利息学费,你学习,我付息
没人理我吗
第一人称视角的脚本挂错物体了吧
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或学习日志(21)
Unity培训(18)
U3D培训(18)
Unity学习(18)
第一人称视角随鼠标旋转
& & & 要实现摄像机随鼠标的旋转而旋转,需要先知道欧拉角,也就是自身坐标旋转角度。
Transform.localEulerAngles&自身欧拉角
旋转作为欧拉角度,相对于父级的变换旋转角度。
//方向灵敏度&
&& public float sensitivityX = 10F;&&
&& public float sensitivityY = 10F;&&
&& //上下最大视角(Y视角)&
&& public float minimumY = -60F;&
&& public float maximumY = 60F;&
&& float rotationY = 0F;
&& // Use this for initialization
&& void Start () {
&& // Update is called once per frame
&& void Update ()&
&&&&& //根据鼠标移动的快慢(增量),&获得相机左右旋转的角度(处理X)&
&&&& float rotationX = transform.localEulerAngles.y + Input.GetAxis(&Mouse X&) * sensitivityX;&
&&&&& //根据鼠标移动的快慢(增量),&获得相机上下旋转的角度(处理Y)&
&&&&& rotationY += Input.GetAxis(&Mouse Y&) * sensitivityY;&
&&&&& //角度限制. rotationY小于min,返回min.&大于max,返回max.&否则返回value&&
&&&&& rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);&
&&&&& //总体设置一下相机角度&
&&&&& transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);&&
请继续关注我的博客
更多精彩尽在
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:14661次
排名:千里之外
原创:36篇
(10)(14)(12)

我要回帖

更多关于 以第一人称视角拍的av 的文章

 

随机推荐