unity3d游戏开发经常会遇到移动摄像机的情况,特别是场景太大,屏幕很难完全展示。
以下代码整合了PC和移动设备移动摄像机的方法,支持两点触控缩放
using UnityEngine;
using System.Collections;
public class MoveCamera : MonoBehaviour {
// 记录手指触屏的位置
Vector2 m_screenpos = new Vector2();
// Use this for initialization
void Start () {
// 允许多点触控
Input.multiTouchEnabled = true;
}
// Update is called once per frame
void Update () {
#if !UNITY_EDITOR && ( UNITY_IOS || UNITY_ANDROID )
MobileInput();
#else
DesktopInput();
#endif
}
// 桌面系统鼠标操作
void DesktopInput()
{
// 记录鼠标左键的移动距离
float mx = Input.GetAxis("Mouse X");
float my = Input.GetAxis("Mouse Y");
if ( mx!= 0 || my !=0 )
{
//松开鼠标左键
if (Input.GetMouseButton(0))
{
Camera.main.transform.Translate(new Vector3(mx*Time.deltaTime, my * Time.deltaTime, 0));
}
}
}
// 移动平台触屏操作
void MobileInput()
{
if (Input.touchCount <= 0)
return;
// 1个手指触摸屏幕
if (Input.touchCount == 1)
{
if (Input.touches[0].phase == TouchPhase.Began)
{
// 记录手指触屏的位置
m_screenpos = Input.touches[0].position;
}
// 手指移动
else if (Input.touches[0].phase == TouchPhase.Moved)
{
// 移动摄像机
Camera.main.transform.Translate(new Vector3(Input.touches[0].deltaPosition.x * Time.deltaTime, Input.touches[0].deltaPosition.y * Time.deltaTime, 0));
}
// 手指离开屏幕 判断移动方向
if (Input.touches[0].phase == TouchPhase.Ended &&
Input.touches[0].phase != TouchPhase.Canceled)
{
Vector2 pos = Input.touches[0].position;
// 手指水平移动
if (Mathf.Abs(m_screenpos.x - pos.x) > Mathf.Abs(m_screenpos.y - pos.y))
{
if (m_screenpos.x > pos.x){
//手指向左划动
}
else{
//手指向右划动
}
}
else // 手指垂直移动
{
if (m_screenpos.y > pos.y){
//手指向下划动
}
else{
//手指向上划动
}
}
}
}
else if ( Input.touchCount >1 )
{
// 记录两个手指的位置
Vector2 finger1 = new Vector2();
Vector2 finger2 = new Vector2();
// 记录两个手指的移动
Vector2 mov1 = new Vector2();
Vector2 mov2 = new Vector2();
for (int i=0; i<2; i++ )
{
Touch touch = Input.touches[i];
if (touch.phase == TouchPhase.Ended )
break;
if ( touch.phase == TouchPhase.Moved )
{
float mov = 0;
if (i == 0)
{
finger1 = touch.position;
mov1 = touch.deltaPosition;
}
else
{
finger2 = touch.position;
mov2 = touch.deltaPosition;
if (finger1.x > finger2.x)
{
mov = mov1.x;
}
else
{
mov = mov2.x;
}
if (finger1.y > finger2.y)
{
mov+= mov1.y;
}
else
{
mov+= mov2.y;
}
Camera.main.transform.Translate(0, 0, mov * Time.deltaTime);
}
}
}
}
}
}
分享到:
相关推荐
此外,教程可能还会涵盖光照、动画、物理系统、碰撞检测、粒子效果、材质与纹理、摄像机控制等方面的内容。这些知识将帮助开发者创建更丰富、更动态的游戏环境。同时,Unity 3D的强大之处还在于其丰富的社区资源和...
Unity3D是一个流行的跨平台游戏开发引擎,它允许开发者创建2D和3D游戏、交互式内容等,并且可以部署到多个平台,包括PC、游戏机、移动设备以及网页端。接下来,我将详细解释Unity3D相关的各个知识点,内容将基于给定...
在这个“Unity3d屏幕特效-摄像机特效插件-Camera Filter Pack”中,我们主要关注的是Unity3D中的摄像机特效,特别是通过Camera Filter Pack 4.0.0插件实现的各种视觉效果。 Camera Filter Pack是Unity3D的一款专业...
8. **摄像机控制**:为了呈现最佳的视角,可能需要编写脚本来控制摄像机的移动、旋转和缩放,或者使用Unity的内置摄像机过渡工具。 9. **UI设计**:虽然这可能是一个短视频,但用户界面(UI)设计也很重要,如播放/...
Unity3D支持跨平台打包和发布,这意味着虚拟校园漫游系统可以部署到多种不同的设备上,例如PC、移动设备或游戏机等。 综上所述,基于Unity3D的虚拟校园漫游系统不仅能够提供三维视觉效果,而且能够支持复杂的交互...
Unity3D是一款强大的跨平台游戏开发工具,支持2D和3D游戏制作,广泛应用于PC、移动设备以及各种游戏平台。在这款小型FPS游戏中,开发者可能已经实现了一些基本的游戏机制,如角色移动、射击、视角控制等。 描述中...
开始游戏开发前,需要下载并安装Unity3D编辑器,设置合适的开发环境,包括安装必要的SDK(软件开发工具包),如Android SDK、iOS SDK等,以及配置Unity3D支持的开发平台。 3. Unity3D项目结构和资源管理: Unity3D...
Unity3D是目前世界上最受欢迎的游戏开发工具之一,它支持跨平台开发,允许开发者以C#编程语言创建2D、3D游戏,广泛应用于手机、桌面以及主机游戏开发。 在这个项目中,开发者将学习到Unity3D的基础知识,包括但不...
U3D 移动PC端 AR扫描线描边,打开摄像机,扫描线经过后描边图像, 可调整扫描线颜色 扫描拖尾长短 描边颜色 描边粗细 使用方法 将shader 拖放到材质球 然后将材质球赋予摄像机 这样摄像机捕捉的2d 3d内容都将会描边 ...
3. **移动FBX文件**:将导出的FBX文件复制到Unity3D项目的资源文件夹中。这通常是项目根目录下的"Assets"文件夹。 4. **自动导入**:当返回Unity3D时,系统会自动检测并导入FBX文件。Unity3D支持导入以下内容: - ...
首先,构建游戏框架是游戏开发的基础,包括场景设计、角色和物体的创建与摆放、摄像机的设置等。Unity3D提供了强大的场景编辑器,允许开发者以直观的方式构建游戏世界的每一个细节。开发者可以通过拖放3D模型、使用...
Unity3D是一款跨平台的游戏开发工具,支持Windows、Mac、Linux等多种操作系统,并能发布到包括PC、移动设备、网页、虚拟现实等多个平台。它采用了C#作为主要编程语言,拥有强大的可视化编辑器和丰富的资源库,使得...
2. **制作一个第一人称射击游戏**:通过这个项目了解如何设置摄像机视角、射击逻辑、碰撞检测等内容。 3. **构建一个基于物理的解谜游戏**:通过设计不同的物理障碍,让玩家通过解决谜题来完成关卡。 通过这些实例...
Unity3D是当前主流的游戏开发引擎之一,拥有跨平台开发特性,能够支持PC、移动设备、游戏机以及网页等多种平台的游戏开发。其案例开发源码资源是指使用Unity3D进行游戏开发或项目实践时所制作的一系列示例项目的源...
Unity3D 是一个功能强大的游戏引擎,支持多种平台,包括 Windows、Mac、移动设备等。在游戏开发中,视频播放是一个非常重要的组件,能够吸引玩家的注意,提高游戏的整体体验。本文将介绍如何在 Unity3D 中播放视频,...
由于其支持多种操作系统平台,如Windows、Mac OS X以及Linux,并且能够编译成多个平台的游戏,比如PC、游戏控制台、移动设备等,使得Unity3D成为游戏开发者极为青睐的工具。 在开始学习Unity3D游戏开发之前,首先...
第6课:基本组件之摄像机.mp4 第7课:基本组件之灯光.mp4 第8课:组件与脚本.mp4 第9课:鼠标键盘输入.mp4 第10课:使用变换组件移动游戏物体.mp4 第11课:物理组件之刚体.mp4 第12课:物理组件之碰撞体.mp4 第13课...
6. **相机与渲染**:讲解Unity的摄像机设置,包括视角控制、多相机应用以及后期处理效果。 7. **光照与阴影**:介绍Unity中的光源类型、阴影效果以及光照烘焙。 8. **物理系统**:包括刚体、关节、碰撞检测等内容...
Unity是一款强大的跨平台游戏开发引擎,它支持在多个操作系统上创建3D和2D应用程序,包括Android和iOS。本项目的核心是使用Unity的WebCam API来调用移动设备的摄像头功能,实现跨平台的视频捕获和显示。下面将详细...
最后,Unity3D支持多平台发布,包括PC、移动设备、网页和各种游戏主机。教程可能会教你如何配置和打包项目,以便在不同的平台上运行。 总的来说,“Unity3D十五分钟教程”是一个全面且基础的引导,尽管时间有限,但...