您的位置:首页 > 移动开发 > Unity3D

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