Unity引擎中的一些常用方法
2017-08-11 15:11
615 查看
Unity引擎中的一些常用方法
发射射线
从任意GameObject或者屏幕上鼠标位置发射。void Update() { // 点击鼠标左键时发射射线 if (Input.GetMouseButtonDown(0)) { // 从鼠标所在的位置发射 //Camera currentCamera = Camera.main; //Vector2 screenPosition = Input.mousePosition; //Ray ray = currentCamera.ScreenPointToRay(screenPosition); // 从物体发射射线,替换成自己的GameObject的transform Ray ray = new Ray(transform.position, transform.forward); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { print(hit.transform.name); } } }
旋转Vector3
计算一个Vector3绕旋转中心旋转指定角度后所得到的向量:/// <summary> /// 计算一个Vector3绕旋转中心旋转指定角度后所得到的向量。 /// </summary> /// <param name="source">旋转前的源Vector3</param> /// <param name="axis">旋转轴</param> /// <param name="angle">旋转角度</param> /// <returns>旋转后得到的新Vector3</returns> public Vector3 V3RotateAround(Vector3 source, Vector3 axis, float angle) { Quaternion q = Quaternion.AngleAxis(angle, axis);// 旋转系数 return q * source;// 返回目标点 }
旋转Quaternion
下面的方法可以获得GameObject绕指定轴旋转给定角度后的rotation,其返回值是一个四元数。注意该方法只计算原地旋转,即绕GameObject自身锚点旋转,不能设置其他旋转中心。/// <summary> /// 获得GameObject绕轴 axis 旋转 angle 角度后的rotation。 /// </summary> /// <param name="obj">旋转对象</param> /// <param name="axis">旋转轴</param> /// <param name="angle">旋转角度</param> /// <param name="apply">是否将旋转应用到GameObject</param> /// <returns>旋转后的rotation</returns> public Quaternion QRotateAround(Transform obj, Vector3 axis, float angle, bool apply = false) { Vector3 forward = Quaternion.AngleAxis(angle, axis) * obj.forward; Vector3 up = Quaternion.AngleAxis(angle, axis) * obj.up; Quaternion result = Quaternion.LookRotation(forward, up); if (apply) obj.rotation = result; return result; }
相关文章推荐
- Unity项目使用中包装一些常用的方法
- anrdroid+unity游戏开发之c#一些常用“方法”
- anrdroid+unity游戏开发之c#一些常用“方法”
- 在Unity中常用到的一些安卓方法封装
- Extjs4中Ext下的一些常用方法
- 安卓中一些常用方法
- Js常用的一些日期方法
- java中常用的一些方法
- 【jQuery】选择器与一些常用方法应用详解
- js、jQuery中常用的一些方法
- JS常用方法的一些总结一
- 抽象类PublicPage封转一些页面常用方法
- jq里面常用的一些方法总结
- c++中一些常用的方法
- 常用类的一些方法
- Spring和Hibernate集成的HibernateTemplate的一些常用方法总结
- 一些常用的方法
- Unity 常用射线检测方法
- QTP获取浏览器的一些常用属性的方法
- java技巧——常用的一些好方法