unity--3D物体的上下左右移动,鼠标控制大小,旋转

news/2024/11/28 18:50:43/
这次文章主要是看了网上写的很多关于物体上下左右位移,鼠标控制物体的大小,旋转问题,但是下载很多,依然没有自己想要的结果,就自己根据前辈经验,在上面稍加修改,简直就是班门弄斧了。方便自己,也方便大家.这次主要有几点需要说明,就是里面的GameObject需要我们自己去拖,毕竟unity大家为了方便使用,所有能设置为变量的都需要设置变量,一目了然。有点unity基础的都能够看的懂。我上面加的有一个iTween,我作为跳转场景使用了我直接注释掉,也不删除了,看看也可以。
using UnityEngine;
using System.Collections;
using System.IO;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class Move : MonoBehaviour
{
public Transform target;
private int MouseWheelSensitivity = 50;
private int MouseZoomMin = 20;
private int MouseZoomMax = 112;
private float normalDistance = 500;
private Vector3 normalized;
private float xSpeed = 250.0f;
private float ySpeed = 120.0f;
private float x = 0.0f;
private float y = 0.0f;
private System.DateTime oldTime;
private System.DateTime nowTime;
//public GameObject plane;
//private Vector3 moveTarget;
//private bool ismoving = false;
//public GameObject cameratarget;
//private string nextScene;
void Start()
{     
oldTime = System.DateTime.Now;
transform.LookAt(target);
//iTween.MoveBy(plane, iTween.Hash("z", 10, "easeType", iTween.EaseType.easeInCubic, "loopType", iTween.LoopType.pingPong, "delay", 0.1));
}
void Update()
{
//if (Input.GetMouseButtonDown(0))
//{
//    Ray ray;      
//    ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定义一条射线,这条射线从摄像机屏幕射向鼠标所在位置
//    //首先判断是否点击了鼠标左键
//    RaycastHit hit; //声明一个碰撞的点(暂且理解为碰撞的交点)
//    if (Physics.Raycast(ray, out hit)) //如果真的发生了碰撞,ray这条射线在hit点与别的物体碰撞了
//    {
//        if (hit.transform.CompareTag("NextScene"))
//        {
//            string scene = hit.transform.name;
//            nextScene = scene;
//            Move(ray.direction);
//            // SceneManager.LoadScene(scene);
//        }
//    }
//}
// if (Mathf.Abs(cameratarget.transform.localPosition.x - moveTarget.x) > -600 &&
//Mathf.Abs(cameratarget.transform.localPosition.y - moveTarget.y) < 100 &&
//Mathf.Abs(cameratarget.transform.localPosition.z - moveTarget.z) > -100)
// {
//     ismoving = true;
//     SceneManager.LoadScene(nextScene);
// }
//string name = PlayerPrefs.GetString("filename");
// if (name != "")
// {
//    // target = GameObject.Find(name).transform;
//}
nowTime = System.DateTime.Now;
System.TimeSpan ts1 = new System.TimeSpan(oldTime.Ticks);
System.TimeSpan ts2 = new System.TimeSpan(nowTime.Ticks);
System.TimeSpan ts = ts2.Subtract(ts1).Duration();
if (Input.GetMouseButton(1))
{
if (Input.GetAxis("Mouse X") < 0)
transform.RotateAround(target.position, Vector3.down, 4);
if (Input.GetAxis("Mouse X") > 0)
transform.RotateAround(target.position, Vector3.up, 4);
}
else if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
{
normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
}
if (normalDistance < MouseZoomMin)
{
normalDistance = MouseZoomMin;
}
if (normalDistance > MouseZoomMax)
{
normalDistance = MouseZoomMax;
}
transform.GetComponent<Camera>().fieldOfView = normalDistance;
}
else if (Input.GetMouseButton(0))
{
if (Input.GetAxis("Mouse Y") < 0)  //down
{
Vector3 temp = Vector3.up * 60.0f * Time.deltaTime;
print("wyz==up===" + transform.localPosition.y);
if (transform.localPosition.y > 300)
{
temp = Vector3.up * 5.0f * Time.deltaTime;
transform.Translate(temp);
}
else
{
transform.Translate(temp);
}
}
if (Input.GetAxis("Mouse Y") > 0)  //up 
{
print("wyz==donw===" + transform.localPosition.y);
Vector3 temp = Vector3.down * 60.0f * Time.deltaTime;
if (transform.localPosition.y < -300)
{
temp = Vector3.up * 5.0f * Time.deltaTime;
transform.Translate(temp);
}
else
{
transform.Translate(temp);
}
}
if (Input.GetAxis("Mouse X") < 0)
{
Vector3 temp = Vector3.right * 100.0f * Time.deltaTime;
temp = Vector3.right * 60.0f * Time.deltaTime;
transform.Translate(temp);
transform.Translate(temp);
}
if (Input.GetAxis("Mouse X") > 0)
{
Vector3 temp = Vector3.left * 100.0f * Time.deltaTime;
temp = Vector3.left * 60.0f * Time.deltaTime;
transform.Translate(temp);
transform.Translate(temp);
}
}
}
//public void Move(Vector3 dir)
//{
//    ismoving = true;
//    moveTarget = dir * 20;
//    iTween.MoveTo(cameratarget, iTween.Hash("position", moveTarget, "oncomplete", "myClbk",
//        "loopType", iTween.LoopType.loop, "speed", 15.0f));
//}
}
 


http://www.ppmy.cn/news/249768.html

相关文章

3D变形:平移、旋转、缩放

什么是3d转换 定义元素在三维空间移动、缩放、旋转 3d坐标轴&#xff08;图示&#xff09; 3D立体空间的3根轴线 x轴&#xff1a;水平&#xff0c;向右为正&#xff0c;向左为负 y轴&#xff1a;垂直&#xff0c;向下为正&#xff0c;向上为负 z轴&#xff1a;垂直于屏幕&a…

2D和3D转换

转换&#xff08;transform&#xff09; transform 是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、变形、缩放。 要想学好2D和3D转换要先对 坐标 有一定了解 2D 2维坐标系 2D转换中的 属性 在使用转换是我们要先给元素添加转换属性 transform(x,y)&…

3D视觉 之 线激光3D相机

3D视觉 之 线激光3D相机 飞鸢逐浪 专注于机器视觉、OpenCV、C编程 84 人赞同了该文章 1 3D 视觉 常见的三维视觉技术&#xff0c;包含双目、ToF、激光三角、结构光等&#xff0c;如下图&#xff1a; 1&#xff09;毫米级 双目、ToF、结构光(散斑)的精度为 mm 级&#xff0…

2D转3D

&#xff08;本文部分内容摘选自http://www.cnblogs.com/ImageVision/archive/2012/03/26/2418602.html&#xff0c;http://www.guokr.com/article/145897/&#xff09; 第一&#xff0c;我们先看看所谓的3D和2D最大的区别是什么呢&#xff1f;没错&#xff0c;就是图片的深度…

3D照片旋转

前言 第一次写不知道写些啥&#xff0c;大学四年&#xff08;PS&#xff1a;计算机专业&#xff09;&#xff0c;本人菜鸟是真的菜。 一、3D照片旋转 1、首先创建一个新的文件夹&#xff0c;再在里面创建一个新的文件来保存照片&#xff0c;然后我是参照该博主的https://blo…

3D到2D的转换方式

import SimpleITK as sitk import numpy as np import cv2 import os import glob import tqdmdef nifti2png(path):for file in tqdm.tqdm(glob.glob(os.path.join(path, "*"))): # *表示通配符&#xff0c;即path下面的所有文件都遍历一遍image sitk.ReadImage(f…

3D地图app

3D三维地图APP 发布时间&#xff1a;2018-07-19 版权&#xff1a; 3D地图依据高程数据等对地表进行渲染&#xff0c;实现地表的起伏&#xff0c;模拟出真实的三维场景&#xff0c;让你有如身临其境般的感觉。 &#xff08;注&#xff1a;Bigemap 3D地图是一个三维地图浏览功能…

3D视觉之线激光3D相机

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 作者丨飞鸢逐浪知乎 来源丨https://zhuanlan.zhihu.com/p/486516636 编辑丨3D视觉工坊 1 3D 视觉 常见的三维视觉技术&#xff0c;包含双目、ToF、激光三角、结构光等&#xff0c;如下图&#xff1a; 1&#…