Unity3D简单实现游戏对象跟随鼠标旋转
2017-09-24 11:47
567 查看
[SerializeField] LayerMask whatIsGround;
void Update(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.Log(ray);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo, 200, whatIsGround)){
Vector3 target = hitInfo.point;
target.y = transform.position.y;
transform.LookAt(target);
}
解释:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Camera.Main是获取第一个启用且被标记为”MainCamera”的相机。
ScreenPointToRay(Input.mousePosition);
通过MainCamera射出一道无限延伸的射线到Mouse的位置。
Ray类型包含一个Origin(圆点)和一个Direction(方向)两个三位坐标属性,Origin跟随鼠标的移动而改变,Direction始终是朝向MainCamera的方向。
RaycastHit hitInfo;RaycastHit所包含的数据很多,这里主要用的其中的"Point"这一属性。
public static bool Raycast (Ray ray, out RaycastHit hitInfo, floatmaxDistance, int layerMask);Raycast返回一个bool值,判断射线是否与指定的遮罩层(layerMask)碰撞器产生碰撞。
Transform.LookAt(target);
可能会遇到的问题:
通过Debug.Log()输出Ray变量有数值,但是玩家不跟随鼠标移动而转向。
可以通过Debug.Log()检查Physics.Raycast()返回的bool是否为真,如果不是,检查场景内的地板Layer是否标记为对应的layerMask。
void Update(){
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Debug.Log(ray);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo, 200, whatIsGround)){
Vector3 target = hitInfo.point;
target.y = transform.position.y;
transform.LookAt(target);
}
解释:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Camera.Main是获取第一个启用且被标记为”MainCamera”的相机。
ScreenPointToRay(Input.mousePosition);
通过MainCamera射出一道无限延伸的射线到Mouse的位置。
Ray类型包含一个Origin(圆点)和一个Direction(方向)两个三位坐标属性,Origin跟随鼠标的移动而改变,Direction始终是朝向MainCamera的方向。
RaycastHit hitInfo;RaycastHit所包含的数据很多,这里主要用的其中的"Point"这一属性。
public static bool Raycast (Ray ray, out RaycastHit hitInfo, floatmaxDistance, int layerMask);Raycast返回一个bool值,判断射线是否与指定的遮罩层(layerMask)碰撞器产生碰撞。
Transform.LookAt(target);
可能会遇到的问题:
通过Debug.Log()输出Ray变量有数值,但是玩家不跟随鼠标移动而转向。
可以通过Debug.Log()检查Physics.Raycast()返回的bool是否为真,如果不是,检查场景内的地板Layer是否标记为对应的layerMask。
相关文章推荐
- [unity3d]如何实现游戏对象跟随鼠标方向移动
- [unity3d]如何实现游戏对象跟随鼠标方向移动
- [脚本]实现游戏对象跟随鼠标方向移动
- [脚本]实现游戏对象跟随鼠标方向移动
- 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)
- [脚本]实现游戏对象跟随鼠标方向移动
- Unity3D 2D游戏鼠标点击选中对象如何实现
- 在Unity3D中如何让游戏对象围绕某个特定的对象旋转
- [Unity3D]Unity3D游戏开发之史上最简单的鼠标点击控制人物走动实现
- 用js实现简单的鼠标跟随效果
- Unity3d GUI中的图片跟随鼠标旋转脚本
- Unity3D Camera跟随游戏对象后面拍摄的方法(三)
- 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景
- unity3D鼠标滚轮来实现镜头拉近拉远及视角旋转
- Unity3D 物体跟随鼠标旋转
- OpenGL 鼠标3D旋转简单实现
- opengl 鼠标3D旋转简单实现
- Unity3D GUI中的图片跟随鼠标旋转脚本
- [Unity3D]手机3D游戏开发:简单的移动和缩放鼠标手势脚本源码
- unity3d简单的相机跟随及视野旋转缩放