【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2906|回复: 0

[脚本] 手机上摄像机控制代码

[复制链接]
发表于 2013-4-23 14:44:47 | 显示全部楼层 |阅读模式
本帖最后由 夜行的猫仔 于 2013-4-23 14:59 编辑

手机和PC不同,鼠标始终存在,移动的时候是平滑的,手机上手的点触会让摄像机突然偏转很大的角度。
要制作一个手机上的摄像机其实很简单,修改系统的MouseLook脚本,增加一个判断,如果是触摸屏
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){
     //这里是MouseLook脚本原来的内容
}
这就OK了!
CSDN上有一段鼠标右键旋转摄像机的代码,大家千万不要下载,错的。!
以下是手机摄像机代码:
  1. using UnityEngine;
  2. using System.Collections;

  3. [AddComponentMenu("Camera-Control/Mouse Look")]
  4. public class CameraControl : MonoBehaviour {        

  5.         public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
  6.         public RotationAxes axes = RotationAxes.MouseXAndY;
  7.         public float sensitivityX = 2F;
  8.         public float sensitivityY = 2F;

  9.         public float minimumX = -180F;
  10.         public float maximumX = 180F;

  11.         public float minimumY = -60F;
  12.         public float maximumY = 60F;

  13.         float rotationY = 0F;
  14.         void Update ()
  15.         {        
  16.                 if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){
  17.                         if (axes == RotationAxes.MouseXAndY)
  18.                 {
  19.                         float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
  20.                         
  21.                         rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
  22.                         rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
  23.                         
  24.                         transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
  25.                 }
  26.                 else if (axes == RotationAxes.MouseX)
  27.                 {
  28.                         transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
  29.                 }
  30.                 else
  31.                 {
  32.                         rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
  33.                         rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
  34.                         
  35.                         transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
  36.                 }        
  37.                 }
  38.         }

  39.         void Start ()
  40.         {
  41.                 // Make the rigid body not change rotation
  42.                 if (rigidbody)
  43.                         rigidbody.freezeRotation = true;
  44.         }
  45. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-11-27 08:10

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表