Unity3D实现控制摄像机移动
作者:JayW就是我吖 发布时间:2022-06-23 20:44:04
标签:Unity,摄像机,移动
本文实例为大家分享了Unity3D实现控制摄像机移动的具体代码,供大家参考,具体内容如下
最近公司的几个项目开发内容基本相同,很多脚本直接复制过来就可以拼接项目。之前一直是代码爱好者,能自己敲的绝对不去复制粘贴。但是开发速度确实是被耽误了,所以接下来打算把开发中常用的脚本都发到博客上。自己需要的时候直接拿来。也希望能帮到你们。
unity编辑器中按住鼠标右键,在通过控制键盘的wasdqe键可以自由控制视野。
下面就是实现操作的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//巡游模式摄像机控制
public class CameraMove : MonoBehaviour
{
public static CameraMove Instance = null;
private Vector3 dirVector3;
private Vector3 rotaVector3;
private float paramater = 0.1f;
//旋转参数
private float xspeed = -0.05f;
private float yspeed = 0.1f;
private float dis;
void Awake ()
{
Instance = this;
}
private void Start()
{
rotaVector3 = transform.localEulerAngles;
dis = UIFuc.Instance.Dis;
}
// Update is called once per frame
void FixedUpdate ()
{
//旋转
if (Input.GetMouseButton(1))
{
rotaVector3.y += Input.GetAxis("Horizontal") * yspeed;
rotaVector3.x += Input.GetAxis("Vertical") * xspeed;
transform.rotation = Quaternion.Euler(rotaVector3);
}
//移动
dirVector3 =Vector3.zero;
if (Input.GetKey(KeyCode.W))
{
if(Input.GetKey(KeyCode.LeftShift)) dirVector3.z = 3;
else dirVector3.z = 1;
}
if (Input.GetKey(KeyCode.S))
{
if (Input.GetKey(KeyCode.LeftShift)) dirVector3.z = -3;
else dirVector3.z = -1;
}
if (Input.GetKey(KeyCode.A))
{
if (Input.GetKey(KeyCode.LeftShift)) dirVector3.x = -3;
else dirVector3.x = -1;
}
if (Input.GetKey(KeyCode.D))
{
if (Input.GetKey(KeyCode.LeftShift)) dirVector3.x = 3;
else dirVector3.x = 1;
}
if (Input.GetKey(KeyCode.Q))
{
if (Input.GetKey(KeyCode.LeftShift)) dirVector3.y = -3;
else dirVector3.y = -1;
}
if (Input.GetKey(KeyCode.E))
{
if (Input.GetKey(KeyCode.LeftShift)) dirVector3.y = 3;
else dirVector3.y = 1;
}
transform.Translate(dirVector3 * paramater,Space.Self);
//限制摄像机范围
transform.position = Vector3.ClampMagnitude(transform.position, dis);
}
}
由于项目需要限制摄像机的移动范围,所以我在最后加上了限制的代码。
来源:https://blog.csdn.net/qq_33994566/article/details/78294295


猜你喜欢
- 题目一 解法/** * Definition for a binary tree node. * public class Tre
- 对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有A
- 本文实例为大家分享了Unity shader实现高斯模糊效果的具体代码,供大家参考,具体内容如下正常图:高斯模糊效果图:shader代码:S
- 一、MyBatis背景介绍MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码
- RFC6749OAuth2的官方文档在RFC6749:https://datatracker.ietf.org/doc/html/rfc67
- 单例模式动机有时候只有一个类的实例是很重要的。比如,一个系统应该只有一个窗口管理实例。单例模式是最简单设计模式:类负责实例化自己,确保只有一
- <?xml version="1.0" encoding="UTF-8"?><eh
- 在使用Unity中的Debug.Log()进行日志输出时很不方便,在打包出来的可执行文件中没有办法看到输出,所有就想自己实现一个简易的日志输
- 借用@Caching实现入参是基本类型的:@Caching(evict={@CacheEvict(value = Cache.CONSTAN
- 这篇文章主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- Android自定义短信验证码组件,供大家参考,具体内容如下效果图1.布局实现因为要禁用光标,所以我用TextView代替了EditText
- java修改JFrame默认字体修改默认字体的方法很简单。首先我们随便写一个按钮出来:import javax.swing.*; publi
- 我们在使用C# 语言的Assembly.Load 来加载托管程序集并使用反射功能时,一般需要先通过Assembly.Load()
- 快捷键辅助类 class HotKey { /// <summary> /// 如果函数执行成功,返回值不为0。 /// 如果函
- 定义MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法MD家族有MD2、MD3、MD4、MD5,一代比一代
- 代码public class LamdaDemo{ public static void main( String[] args
- 在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况。之前的方法比较笨拙,需要给不同的类型,各自写一个转换的
- 一、背景有些业务场景下需要将 Java Bean 转成 Map 再使用。以为很简单场景,但是坑很多。二、那些坑2.0 测试对象import
- Error:All flavors must now belong to a named flavor dimension. The fla
- 一、整合原理二、导包(41个)1.hibernate(1)hibernate/lib/required(2)hibernate/lib/jp