Unity之升高人物视野
来源:互联网 发布:股市大数据数据宝app 编辑:程序博客网 时间:2024/04/29 23:57
在做漫游的时候,如果你是使用的第一人称,看比你视野高或者低的物体时,你需要看清物体贴图的细节,比如说你要看清上面写的小字是什么,仰视或者俯视,由于距离的限制很难能够到达清晰的效果,如果平视就需要改变视野的高度,在这里就简单探讨一下如何来改变第一人称视野的高度问题。
在Unity里第一人物呈现在场景里就是这么一个绿柱,绿色部分代表人物高度,默认值是2,高度增加绿柱随之增长。绿柱中间部分灰色的胶囊体为摄像机所在位置,默认位置为中间位置,既center.y=0,他放射出的锥形白色细线就为人物视野范围。调整人物视野高度实际就是调节摄像机在Y轴的高度。
摄像机高度在第一人称的场景中是由人物高度height和摄像机相对人物高度的位移center.y的值来决定的。
因为重力原因,在运行场景时,人物高度呈现的绿色柱体是落地的,人物中transform.poition.y的y轴坐标只代表人物的初始位置,与运行后人物落地的坐标值是不一致的,所以在程序中单纯更改坐标y轴的值是改变不了任务视野高度的。另外,如果在运行场景中人物的y轴的坐标值不变的情况下,光更改人物高度height的值,有可能会捅破天,达到场景的上限值尤其是在一个房间里的场景表现的特为明显,单纯更改center.y的值有可能会直接捅破地,超出地面的下限值,这两种情况都可能导致人物掉出场景。要想更改视野高度只能几个值同时改变。
首先我们建立第一人物视野。先倒入第一人物,在project里点击右键导入character controller,然后再在这个选项中找到first person controller将它拖到hierarchy中,将第一人物拖到场景中调整人物位置,这样第一人物就建立好了。
接下来我们进行第二步,调整高度。
private var controller:CharacterController=null; //建立角色对象
private var moveSpeed:float=0.4f; //上下移动步幅
private var cameraY:float=14.0f; //初始化人物高度
这里补充说一句,最好将摄像机位置放在绿柱的最上方,相当于人头在身体的上方一样,这里我把center中y轴的值设为了-4,负值代表向绿柱的上方移动,具体的值你要在场景中观察,以人物高度来定,人物高度不同,这个值也是不同的。
private var pos:Vector3; //角色坐标
function Start () {controller=GetComponent(CharacterController);
}
function Update () {
controller.height=cameraY;
//按下Q键升高视野高度
if(Input.GetKeyDown(KeyCode.Q))
{
if(controller.height<24) //规定一个升高的上限值
{
cameraY=cameraY+moveSpeed;
controller.height=cameraY;
controller.center.y=controller.center.y-0.2f;
//升高角色y轴坐标值,防止因参数改变人物身体捅破地
controller.transform.position=new Vector3(controller.transform.position.x,controller.transform.position.y+(moveSpeed*0.8f),controller.transform.position.z);
}
}
//按下E键降低视野高度
if(Input.GetKeyDown(KeyCode.E))
{
if(controller.height>8) //规定一个下降的下限值
{
cameraY=cameraY-moveSpeed;
controller.height=cameraY;
controller.center.y=controller.center.y+0.2f;
controller.transform.position=new Vector3(controller.transform.position.x,controller.transform.position.y+(moveSpeed*0.8f),controller.transform.position.z);
}
}
pos=controller.transform.position;
}
- Unity之升高人物视野
- Unity之第一人称视野控制
- Unity之人物骨骼动画
- unity之NPC人物名称显示
- unity之人物行走的实现
- Unity第三人称视野
- Unity双指触控缩放视野
- 自学unity之人物动画控制(第一篇)
- Unity模拟龙之谷人物行走简单控制
- Unity模拟龙之谷人物控制(二)
- Unity模拟龙之谷人物行走简单控制
- Unity模拟龙之谷人物控制(二)
- 【Unity】unity 人物动态头像
- unity人物移动
- unity人物血条
- unity人物移动
- Unity人物残影
- Unity人物换装
- Android HTTP实例 发送请求和接收响应
- 王垠:如何掌握程序语言
- js保留2位小数 3.14159 =3.14
- jquery ajax 同步异步的执行
- 如何去掉mapreduce自动添加的分隔符
- Unity之升高人物视野
- cocos2d
- semop SEM_UNDO标识
- maven-resources-plugin error using copy-resources goal: 'resources', 'outputDirectory' missing or in
- Android中Touch事件流向
- oracle 10g Data Guard Broker的一个Bug
- 错误提示:mysqldump: Got error: 1049: Unknown database 'jpa;' when selecting the database
- jquery datatable 参数
- IE浏览器内存泄露检测工具