unity3d 获取camera怎么实现camera跟随人物

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
unity3d 摄像机跟随角色时被物体遮挡解决方案
下载积分:1000
内容提示:unity3d 摄像机跟随角色时被物体遮挡解决方案
文档格式:DOC|
浏览次数:41|
上传日期: 00:53:05|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
unity3d 摄像机跟随角色时被物体遮挡解决方案
官方公共微信Unity3D Camera跟随游戏对象后面拍摄的方法(三) - 博客频道 - CSDN.NET
narutojzm1的博客
分类:游戏编程
上面两节研究了Camera跟随的两种办法,现在给出第三种。
先介绍一个概念:
四元数*向量 == 将向量按照四元数进行一定的旋转后新的向量。(此说法有错的话烦请指正)
目前通过将Camera的Position和Rotation都赋值成游戏对象的值,达到了第一视角的目的,现在需要将Camera设置到游戏对象坐标系的Z轴负3的位置,以达到第三视角跟随游戏对象的效果。
那么可以这样做:
cameramain.transform.position = gameObj.transform.position - gameObj.transform.rotation * Vector3.forward * 3;
后面的这个gameObj.transform.rotation * Vector3.forward 就是目前游戏对象的Z轴方向在世界坐标中的单位向量。
narutojzm1
排名:千里之外
(3)(6)(4)(7)(49)(14)(4)酷酷小乔 的BLOG
用户名:酷酷小乔
文章数:71
访问量:50468
注册日期:
阅读量:5863
阅读量:12276
阅读量:422797
阅读量:1111177
51CTO推荐博文
//人物方向和判断点击事件加点击特效using&UnityEngine;using&System.Collections;public&class&playerDir&:&MonoBehaviour&{&&&public&GameObject&effect_click_prefab;&&&private&bool&isMoving=false;//鼠标是否被按下&&&public&Vector3&targetPosition=Vector3.zero;//目标位置&&&private&PlayerMove&playerMove;&&&&&void&Start()&&&{&&&targetPosition=transform.position;&&&playerMove=this.GetComponent&PlayerMove&();&&&&&}&&&&void&Update&()&&&&&{&&&&&&&&&&&&if(Input.GetMouseButtonDown(0))&&&&&{&&&&&&Ray&ray&=&Camera.main.ScreenPointToRay(Input.mousePosition);//拿到鼠标按下的点&&&&&&RaycastHit&hitInfo;&&&&&&bool&isCollider=Physics.Raycast(ray,out&hitInfo);//定义一个射线&&&&&&if(isCollider&&hitInfo.collider.tag==Tags.ground)//判断射线是否和地面接触碰撞&&&&&&{&&&&&&&&//判断是否点击到了UI层的东西&&&&&&&&if(UICamera.hoveredObject.tag!="Accept"&&UICamera.hoveredObject.tag!="Inventory_item_grid"&&UICamera.hoveredObject.tag!="Inventory_item")&&&&&&{&&&&&&&&isMoving=true;&&&&&&&&ShowClickEffect(hitInfo.point);&&&&&&&&LookAtTarget(hitInfo.point);&&&&&&&}&&&&&&&&&&&&&&&&}&&&&&}&&&&&&&&&&&&//按下鼠标左建的时候停止运动&&&&&if(Input.GetMouseButtonUp(0))&&&&&{&&&&&&isMoving=false;&&&&&}&&&&&if(isMoving)&&&&&{&&&&&&//得到需要移动到的目标位置&&&&&&//让角色朝向目标位置&&&&&&Ray&ray&=&Camera.main.ScreenPointToRay(Input.mousePosition);//拿到鼠标按下的点&&&&&&RaycastHit&hitInfo;&&&&&&bool&isCollider=Physics.Raycast(ray,out&hitInfo);//定义一个射线&&&&&&if(isCollider&&hitInfo.collider.tag==Tags.ground)//判断射线是否和地面接触碰撞&&&&&&{&&&&&&&&//让当前对象对着射线的方向&&&&&&&&LookAtTarget(hitInfo.point);&&&&&&&&&&}&&&&&}&&&&&else&&&&&{&&&&&&&if(playerMove.isMoving)&&&&&&&{&&&&&&&&LookAtTarget(targetPosition);&&&&&&&}&&&&&}&&&&&&&&&&}&&&&//实例化显示特效效果&&&&void&&&ShowClickEffect(Vector3&hitPoint)&&&&{&&&&&hitPoint=new&Vector3(hitPoint.x,hitPoint.y+0.1f,hitPoint.z);&&&&&GameObject.Instantiate(effect_click_prefab,hitPoint,Quaternion.identity);&&&&}&&&&//让角色朝向目标位置和朝向的改变&&&&void&LookAtTarget(Vector3&hitPoint)&&&&{&&&&&&&&targetPosition=hitPoint;&&&&&&&&targetPosition=new&Vector3(targetPosition.x,transform.position.y,targetPosition.z);//得到主角朝向位置&&&&&&&&this.transform.LookAt(targetPosition);//让主角改变&&&&}}//人物移动using&UnityEngine;using&System.Collections;//角色状态public&enum&PlayerState{Moving,//移动Idle&//闲着}public&class&PlayerMove&:&MonoBehaviour&{&&&public&float&speed=4f;&&&public&PlayerState&state=PlayerState.Idle;//默认状态为Idle&&&private&playerDir&dir;&&&private&CharacterController&controller;//角色控制器&&&public&bool&isMoving=false;&&&&void&Start()&&&&{&&&&dir=this.GetComponent&playerDir&();&&&&controller=this.GetComponent&CharacterController&();&&&&}&&&&void&Update&()&&&&&{&&&&&float&distance=Vector3.Distance(dir.targetPosition,transform.position);//计算目标位置到当前位置&&&&&if(distance&0.3f)&&&&&{&&&&&&isMoving=true;&&&&&&state=PlayerState.Moving;&&&&&&controller.SimpleMove(transform.forward*speed);//角色移动&&&&&}&&&&&else&&&&&{&&&&&&isMoving=false;&&&&&&state=PlayerState.Idle;&&&&&}&&&&}}本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 unity camera 跟随 的文章

 

随机推荐