Unity3d--第三人称摄像机常用控制
1 using UnityEngine; 2 using System.Collections; 3 /* 4 * 第三人称摄像机常用控制 5 */ 6 public class CameraCS : MonoBehaviour { 7 8 private Transform player; 9 private Vector3 offsetPosition; 10 private float distance; 11 private float scrollSpeed = 10; //鼠标滚轮速度 12 private bool isRotating; //开启摄像机旋转 13 private float rotateSpeed = 2; //摄像机旋转速度 14 // Use this for initialization 15 16 void Awake(){ 17 player = GameObject.FindGameObjectWithTag ("Player").transform; 18 } 19 20 void Start () { 21 //摄像机朝向player 22 transform.LookAt (player.position); 23 //获取摄像机与player的位置偏移 24 offsetPosition = transform.position - player.position; 25 } 26 27 // Update is called once per frame 28 void Update () { 29 //摄像机跟随player与player保持相对位置偏移 30 transform.position = offsetPosition + player.position; 31 //摄像机的旋转 32 RotateView (); 33 //摄像机的摄影控制 34 ScrollView (); 35 } 36 37 void ScrollView(){ 38 //返回位置偏移的向量长度 39 distance = offsetPosition.magnitude; 40 41 //根据鼠标滚轮的前后移动获取变化长度 42 distance -= Input.GetAxis ("Mouse ScrollWheel") * scrollSpeed; 43 44 //限制变化长度的范围在最小为4最大为22之间 45 distance = Mathf.Clamp (distance,4,22); 46 47 //新的偏移值为偏移值的单位向量*变换长度 48 offsetPosition = offsetPosition.normalized * distance; 49 50 //打印变化长度 51 Debug.Log (distance); 52 } 53 54 void RotateView(){ 55 //获取鼠标在水平方向的滑动 56 Debug.Log(Input.GetAxis ("Mouse X")); 57 //获取鼠标在垂直方向的滑动 58 Debug.Log(Input.GetAxis("Mouse Y")); 59 60 //按下鼠标右键开启旋转摄像机 61 if (Input.GetMouseButtonDown(1)) { 62 isRotating = true; 63 } 64 65 //抬起鼠标右键关闭旋转摄像机 66 if (Input.GetMouseButtonUp(1)) { 67 isRotating = false; 68 } 69 70 if (isRotating) { 71 72 //获取摄像机初始位置 73 Vector3 pos = transform.position; 74 //获取摄像机初始角度 75 Quaternion rot = transform.rotation; 76 77 //摄像机围绕player的位置延player的Y轴旋转,旋转的速度为鼠标水平滑动的速度 78 transform.RotateAround(player.position,player.up,Input.GetAxis("Mouse X") * rotateSpeed); 79 80 //摄像机围绕player的位置延自身的X轴旋转,旋转的速度为鼠标垂直滑动的速度 81 transform.RotateAround (player.position, transform.right, Input.GetAxis ("Mouse Y") * rotateSpeed); 82 83 //获取摄像机x轴向的欧拉角 84 float x = transform.eulerAngles.x; 85 86 //如果摄像机的x轴旋转角度超出范围,恢复初始位置和角度 87 if (x<10 || x>80) { 88 transform.position = pos; 89 transform.rotation = rot; 90 } 91 } 92 93 //更新摄像机与player的位置偏移 94 offsetPosition = transform.position - player.position; 95 } 96 }
转载于:https://www.cnblogs.com/yuge790615/p/5580905.html
Unity3d--第三人称摄像机常用控制相关推荐
- Unity3D第三人称摄像机控制脚本
好久没有敲Blog该.感谢您的留言.注意.私人信件和其他支持,但我似乎没有办法继续自己曾经写了一篇博客系列,因为我在网上找到有关unity3D太少的内容,U3D相关的文章!.. 第三人称视角 第三人称 ...
- Unity3D第三人称视角摄像机、跟随与球面旋转
Unity3D第三人称视角摄像机.跟随与球面旋转 逻辑释义 图解分析 Unity C#代码 逻辑释义 [关键transform] 1[玩家] 2[注视目标点] 3[摄像机] [摄像机]跟随[注视目标点 ...
- Unity Cinemachine之第三人称摄像机CinemachineFreeLook属性详解
演示 CinemachineFreeLook是一个第三人称视角相机插件,功能非常强大,内置了很多属性可以供开发者根据需求进行调整. 创建 首先是Cinemachine插件的导入,如果是2018以后 ...
- Unity 第三人称 摄像机
今天主要是简单的模拟下吃鸡游戏的第三人称摄像机的实现. 观察 我们玩过吃鸡手游的都知道,吃鸡的人物跟随的摄像机有两种状态 1. 滑动屏幕的时候,摄像机左右上下移动,人物也会跟随着左右移动,上下抬头低头 ...
- UnityStandardAsset工程、源码分析_7_第三人称场景[玩家控制]_人物逻辑
上一章地址:UnityStandardAsset工程.源码分析_6_第三人称场景[玩家控制]_工程组织 上一章里,我们花了一整章的篇幅用于分析场景的结构和处理流程,并且确定了本章的分析目标:Third ...
- 【Unity3D游戏开发学习笔记】(七)上帝之眼—第三人称摄像机的简单实现(跟随视角,自由视角)
陆陆续续又开始更新自己的博客,看来自我驱动能力还是不够啊= =,废话不多说了,之前的内容大概说了一下Unity的一些基础知识,接下来我们将要对一些基本功能做一些学习.大家都知道,一个游戏,少不了摄像机 ...
- 【C#】【Unity】第三人称摄像机跟随人物移动时碰撞到墙壁等,摄像机不穿越墙壁
目前大部分第三人称游戏的摄像机在遇到墙壁等狭隘空间的时候,都选择让摄像机不穿越到墙壁里面,而是让摄像机保持在墙壁表面. 分析情况:(红色方框为摄像机 黑色方框为墙壁) 当前情形摄像机还没达到墙壁摄像机 ...
- Blueprints - UE4第三人称游戏角色控制
虚幻引擎4中第三人称游戏相关,UE4中Blueprint相关,个人学习笔记:
- 摄像机跟随之第三人称视角(一)
在我们开发游戏的时候,总避免不了对摄像机的设置,当然,这也因为每款游戏类型不一样,所以摄像机的跟随或者说放置位置不一样,这也要求我们写出合适的算法.本篇就主要是针对第三人称视角的摄像机,进行算法设计分 ...
- 第三人称游戏人物控制
学unity也有一段时间了,做了不少东西,但因为没有老师也不知道自己做得对不对.所以拿出一点东西出来让大家批评指正.随带说下我的版本是unity5.x 废话不多说进入主题,第三人称游戏我想大家肯定都接 ...
最新文章
- zblog php搜索页面,Z-Blog PHP实现搜索分页
- WPF将Ui保存为图片和保存位图
- mediumtext和string转换_数据库用varchar和text的差别
- element ui 多个子组件_ElementUI 技术揭秘(2) 组件库的整体设计
- 【转载】 C#使用string.IsNullOrWhiteSpace方法判断字符串是否为非空字符
- 一个SpringBoot项目,开发业务前至少应该引入哪些配置?
- shell中设置文字输出的颜色及字体格式
- 计算机培训中学语文研修计划,初中语文个人研修计划书
- mysql自动判断索引机制_Mysql优化之索引实现原理
- asp.net 微信小程序源码 微信分销源码 源文件完全开源 源码
- usbserialch340驱动安装失败_【已解决】Mac中安装USB转串口的CH340G驱动
- 水经注地图发布服务中间件的适用范围
- xtu 1369 Black White Chess
- 第五太阳纪终结,人类文明新开端?
- 第3章 Hive数据类型
- 从前端到全栈-基础能力-js-异步编程
- php sapi模式,PHP中的SAPI是什么?如何实现?(图文)
- 灵魂画手教你浅拷贝与深拷贝
- 【转】从“致加西亚的信”看自行管理
- 使用百度API获取地名坐标信息