(第一人称)摄像机漫游脚本
来源:互联网 发布:ubuntu wiki 编辑:程序博客网 时间:2024/05/23 05:07
主要控制相机在场景里自由的平移,旋转,缩放,而不跟踪一个指定GameObject的实现。
新建场景,将此脚本拖放到一个摄像机上即可,鼠标中键缩放,中键按下移动,右键旋转。
代码如下:
using UnityEngine;
using System.Collections;
namespace Gavin
{
public class FreeCamera : MonoBehaviour {
//旋转变量;
private float m_deltX = 0f;
private float m_deltY = 0f;
//缩放变量;
private float m_distance = 10f;
private float m_mSpeed = 5f;
//移动变量;
private Vector3 m_mouseMovePos = Vector3.zero;
void Start()
{
camera.transform.localPosition = new Vector3(0, m_distance, 0);
}
void Update () {
//鼠标右键点下控制相机旋转;
if (Input.GetMouseButton(1))
{
m_deltX += Input.GetAxis(“Mouse X”) * m_mSpeed;
m_deltY -= Input.GetAxis(“Mouse Y”) * m_mSpeed;
m_deltX = ClampAngle(m_deltX, -360, 360);
m_deltY = ClampAngle(m_deltY, -70, 70);
camera.transform.rotation = Quaternion.Euler(m_deltY, m_deltX, 0);
}
//鼠标中键点下场景缩放;
if (Input.GetAxis(“Mouse ScrollWheel”) != 0)
{
//自由缩放方式;
m_distance = Input.GetAxis(“Mouse ScrollWheel”) * 10f;
camera.transform.localPosition = camera.transform.position + camera.transform.forward * m_distance;
}
//鼠标点击场景移动;
if (Input.GetMouseButtonDown(2))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
m_mouseMovePos = hitInfo.point;
}
}else if (Input.GetMouseButton(2))
{
Vector3 p = Vector3.zero;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
p = hitInfo.point - m_mouseMovePos;
p.y = 0f;
}
camera.transform.localPosition = camera.transform.position - p * 0.05f; //在原有的位置上,加上偏移的位置量;
}
//相机复位远点;
if (Input.GetKey(KeyCode.Space))
{
m_distance = 10.0f;
camera.transform.localPosition = new Vector3(0, m_distance, 0);
}
}
//规划角度;
float ClampAngle(float angle, float minAngle, float maxAgnle)
{
if (angle <= -360)
angle += 360;
if (angle >= 360)
angle -= 360;
return Mathf.Clamp(angle, minAngle, maxAgnle);
}
}
}
- (第一人称)摄像机漫游脚本
- 第一人称视角漫游(unity + 暴风魔镜)
- unity简单自由漫游摄像机控制脚本
- untiy第一人称漫游
- 第一人称摄像机问题
- 漫游动画摄像机制作
- 漫游动画摄像机制作
- OpenGL--摄像机漫游
- 第11章 创建第一人称摄像机
- Unity3D 第一人称视角摄像机旋转控制
- unity 摄像机跟随物体 第一人称跟随
- Unity 视角 第一人称脚本 MouseLook
- Unity3D 第一人称控制器 C#脚本
- Unity第一人称控制脚本解析
- OpenGL实现摄像机漫游/三次贝塞尔曲线
- 第一人称视角(易懂)
- Unity官方_第一人称游戏<恶魔射手>----学习笔记一(英雄脚本)
- Unity第一人称和第三人称视角脚本
- Android 根据item大小实现自动排列的GridLayout
- 第一周:( LeetCode ) Best Time to Buy and Sell Stock I II III(c++)
- 开发语言之shell初接触二
- 基础-7 界面布局
- 基于Hexo+Node.js+github+coding搭建个人博客——进阶篇(从入门到入土)
- (第一人称)摄像机漫游脚本
- POJ Ubiquitous Religions
- Qt中获取CPU的序列号
- 记录一次因为Android版本不同导致的crash异常:Can't create handler inside thread that has not called Looper.prepare()
- osdv3工具的使用和程序的实现
- excel-java(3)
- 支持.swf格式的视频标签
- html中引入调用另一个html的方法
- python day2(20170221)