开发工具:Unity3d 2017.3       Android Studio 3.       Visual studio 2017

开发语言 : C#  , java

3D场景,本人做的是一个简单的3D海岛场景,里面有山脉,椰子树,草 岛周围是海,海水可以动,虽然效果不明显。

下面是单指拖动,双指放大缩小的脚本代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class effect2 : MonoBehaviour {

private float speed = 0.1f;
        private int isforward;//标记摄像机的移动方向
        //记录两个手指的旧位置
        private Vector2 oposition1 = new Vector2();
        private Vector2 oposition2 = new Vector2();

Vector2 m_screenPos = new Vector2(); //记录手指触碰的位置

//用于判断是否放大
        bool isEnlarge(Vector2 oP1, Vector2 oP2, Vector2 nP1, Vector2 nP2)
        {
            //函数传入上一次触摸两点的位置与本次触摸两点的位置计算出用户的手势
            float leng1 = Mathf.Sqrt((oP1.x - oP2.x) * (oP1.x - oP2.x) + (oP1.y - oP2.y) * (oP1.y - oP2.y));
            float leng2 = Mathf.Sqrt((nP1.x - nP2.x) * (nP1.x - nP2.x) + (nP1.y - nP2.y) * (nP1.y - nP2.y));
            if (leng1 < leng2)
            {
                //放大手势
                return true;
            }
            else
            {
                //缩小手势
                return false;
            }
        }

void Start()
        {
            Input.multiTouchEnabled = true;//开启多点触碰
        }

void Update()
        {
            if (Input.touchCount <= 0)
                return;
            if (Input.touchCount == 1) //单点触碰移动摄像机
            {
                if (Input.touches[0].phase == TouchPhase.Began)
                    m_screenPos = Input.touches[0].position;   //记录手指刚触碰的位置
                if (Input.touches[0].phase == TouchPhase.Moved) //手指在屏幕上移动,移动摄像机
                {
                    transform.Translate(new Vector3(Input.touches[0].deltaPosition.x * Time.deltaTime, Input.touches[0].deltaPosition.y * Time.deltaTime, 0));
                }
            }

else if (Input.touchCount > 1)//多点触碰
            {
                //记录两个手指的位置
                Vector2 nposition1 = new Vector2();
                Vector2 nposition2 = new Vector2();

//记录手指的每帧移动距离
                Vector2 deltaDis1 = new Vector2();
                Vector2 deltaDis2 = 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) //手指在移动
                    {

if (i == 0)
                        {
                            nposition1 = touch.position;
                            deltaDis1 = touch.deltaPosition;
                        }
                        else
                        {
                            nposition2 = touch.position;
                            deltaDis2 = touch.deltaPosition;

if (isEnlarge(oposition1, oposition2, nposition1, nposition2)) //判断手势伸缩从而进行摄像机前后移动参数缩放效果
                                isforward = 1;
                            else
                                isforward = -1;
                        }
                        //记录旧的触摸位置
                        oposition1 = nposition1;
                        oposition2 = nposition2;
                    }
                    //移动摄像机
                    Camera.main.transform.Translate(isforward * Vector3.forward * Time.deltaTime * (Mathf.Abs(deltaDis2.x + deltaDis1.x) + Mathf.Abs(deltaDis1.y + deltaDis2.y)));
                }
            }
        }
}

下面是效果截图:

下面是本人的github链接,整个工程都在里面,有兴趣的读者可以自行下载:

https://github.com/jiang-congcong/3D-Scene

Android 3D模型展示相关推荐

  1. Android增强现实(三)-3D模型展示器

    1.Android增强现实(一)-AR的三种方式(展示篇) 2.Android增强现实(二)-支持拖拽控制进度和伸缩的VrGifView 3.Android增强现实(三)-3D模型展示器 前言 前段时 ...

  2. 嵌入式系统大作业——基于QT的3D模型展示

    嵌入式系统大作业--基于QT的3D模型展示 写在前面 实验设备 实现内容 实现过程 在win10上利用SolidWorks软件对模型进行预处理: 编写代码实现功能: 效果演示 参考资料 写在前面 该大 ...

  3. Unity 3D模型展示框架篇之ILRuntime快速入门

    系列文章目录 Unity 3D模型展示框架篇之项目整理 Unity 3D模型展示框架篇之框架运用 Unity 3D模型展示框架篇之自由观察(Cinemachine) Unity 3D模型展示框架篇之资 ...

  4. Unity 3D模型展示框架篇之项目整理

    本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 1. ...

  5. js jquery 3D模型展示

    本人主要用于商城商品的3D模型展示: 效果如下:    可旋转可放大的3D模型展示 用法介绍 (1)如果你想直接使用简单的展示功能那么已经有封装好的js在此 下载引用即可 https://downlo ...

  6. Unity 3D模型展示框架篇之自由观察(Cinemachine)

    本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 在U ...

  7. three.js实现3D模型展示

    开头说明下  文章是转载我同事一个 哥们的.怕自己 以后会用 拿过来  方便以后使用 three.js实现3D模型展示 由于项目需要展示3d模型,所以对three做了点研究,分享出来 希望能帮到大家 ...

  8. Unity 3D模型展示之webGL平台展现

    在之前的项目基础上我们已经打包后在PC端进行展示了.这篇文章主要介绍在切换到webGL上时效果展示不出来需要进行调整,特此记录一下. 1.平台切换 选择WebGL平台切换,没有的可以进行安装,安装之后 ...

  9. Unity 3D模型展示框架篇之框架运用

    本项目将整合之前Unity程序基础小框架专栏在Unity 3D模型展示项目基础上进行整合,并记录了集成过程中对原脚本的调整过程.增加了Asset Bundle+ILRuntime热更新技术流程. 效果 ...

最新文章

  1. hadoop datajoin
  2. python程序中想使用正则表达式_python中正则表达式的使用方法
  3. io口模拟串口 1602显示数据位内容[转]
  4. 陈广老师 C#语言参考视频打包下载地址
  5. ie浏览器和谷歌浏览器控件不同_win7系统怎么重置ie浏览器 重置ie浏览器操作方法【详解】...
  6. oracle两天教程,Linux菜鸟的两天Oracle安装生活
  7. 去哪儿笔试:身份证分组
  8. 大数据学习线路_大数据初学者必备的详细版学习路线图
  9. 码流、单码流、双码流、多码流
  10. 在线小说网站的api和源码(有源码)
  11. windows下sass开发环境的搭建
  12. Revit中项目特别大如何将项目完整的体现在图纸中?
  13. element表格分页功能
  14. fastjson byte[]转json字符串
  15. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(一)
  16. linux wol 戴尔工作站,linux 通过wol远程开机【转】
  17. Android MVP的一点理解
  18. 如何用python爬取公众号文章_如何使用 Python 爬取微信公众号文章
  19. xml文件中引入xsd文件问题解决
  20. 详解操作系统中的接口

热门文章

  1. echarts二次渲染时宽高为0图表不显示
  2. Linux系统账号安全
  3. python爬取猫眼遇到动态字体反爬
  4. 原创超简单代码(1.20)
  5. html类型的网页文件,文件的ContentType类型-网页设计,HTML/CSS
  6. 海贝思蓝牙接收器Linux,特定场景使用测评,电视民工的海备思蓝牙X2发射接收器使用心得。...
  7. 强力推荐—20款免费备份文件软件
  8. tensorflow中squeeze与expand_dims
  9. delphi删除文本内容_文本编辑器EmEditor快捷键指令
  10. 发光细胞:小鼠活体成像工具细胞原理于应用实例