ThisRotate 物体旋转 unity3d
2015-08-29 11:53
337 查看
using UnityEngine;
using System.Collections;
public class ThisRotate : MonoBehaviour
{
Vector3 StartPosition;
Vector3 previousPosition;
Vector3 offset;
Vector3 finalOffset;
Vector3 eulerAngle;
bool isSlide;
float angle;
public float scale = 1;
RaycastHit hit;
void Start()
{
}
void OnGUI()
{
Ray ray =Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
if (hit.transform == transform)
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
Debug.Log(Input.GetAxis("Mouse ScrollWheel"));
scale = scale + Input.GetAxis("Mouse ScrollWheel");
transform.localScale = new Vector3(1 + scale, 1 + scale, 1 + scale);
}
}
}
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartPosition = Input.mousePosition;
previousPosition = Input.mousePosition;
}
if (Input.GetMouseButton(0))
{
offset = Input.mousePosition - previousPosition;
previousPosition = Input.mousePosition;
transform.Rotate(Vector3.Cross(offset, Vector3.forward).normalized, offset.magnitude, Space.World);
}
if (Input.GetMouseButtonUp(0))
{
finalOffset = Input.mousePosition - StartPosition;
isSlide = true;
angle = finalOffset.magnitude;
}
if (isSlide)
{
transform.Rotate(Vector3.Cross(finalOffset, Vector3.forward).normalized, angle * 2 * Time.deltaTime, Space.World);
if (angle > 0)
{
angle -= 5;
}
else
{
angle = 0;
}
}
}
}
using System.Collections;
public class ThisRotate : MonoBehaviour
{
Vector3 StartPosition;
Vector3 previousPosition;
Vector3 offset;
Vector3 finalOffset;
Vector3 eulerAngle;
bool isSlide;
float angle;
public float scale = 1;
RaycastHit hit;
void Start()
{
}
void OnGUI()
{
Ray ray =Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
if (hit.transform == transform)
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
Debug.Log(Input.GetAxis("Mouse ScrollWheel"));
scale = scale + Input.GetAxis("Mouse ScrollWheel");
transform.localScale = new Vector3(1 + scale, 1 + scale, 1 + scale);
}
}
}
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
StartPosition = Input.mousePosition;
previousPosition = Input.mousePosition;
}
if (Input.GetMouseButton(0))
{
offset = Input.mousePosition - previousPosition;
previousPosition = Input.mousePosition;
transform.Rotate(Vector3.Cross(offset, Vector3.forward).normalized, offset.magnitude, Space.World);
}
if (Input.GetMouseButtonUp(0))
{
finalOffset = Input.mousePosition - StartPosition;
isSlide = true;
angle = finalOffset.magnitude;
}
if (isSlide)
{
transform.Rotate(Vector3.Cross(finalOffset, Vector3.forward).normalized, angle * 2 * Time.deltaTime, Space.World);
if (angle > 0)
{
angle -= 5;
}
else
{
angle = 0;
}
}
}
}
相关文章推荐
- unity3d AI's sight
- 利用unity3d自带的CharacterController包制作第一人称控制模型的简单Demo
- unity3d 定时器的使用
- Unity优化大全(八)之 GPU-Ligh和其他
- unity3d中摄像机父物体与模型碰撞
- unity导弹算法 预计目标点
- Unity优化大全(七)之 GPU-几何体和显存宽带
- Unity优化大全(九)之 Memory - Unity3D内部的内存
- Unity3D 5.1烘培
- 使用AndroidStudio建立模块与unity进行交互
- Unity优化大全(六)之 GPU-动态阴影和Shader
- unity 在game视图模型穿插问题
- Unity中物体跟随鼠标的位置
- unity编辑器xml数据库插件
- 关于unity中的update、Lateupdate和FixedUpdate。
- TextMeshPro字体库分析
- Unity优化大全(五)之CPU- VSync Count
- Unity打包xcode工程编译错误及解决方法
- Unity优化大全(四)之CPU-GC(内存回收)和Sricpt
- Unity中的Path对应各平台中的Path