物体随鼠标位置旋转

本文介绍了如何在Unity中使物体根据鼠标位置进行旋转。通过获取鼠标屏幕坐标,转换为三维空间角度,处理不同象限的旋转方向,并利用四元数进行物体旋转,最终提供了一段完整的代码示例。
摘要由CSDN通过智能技术生成

1、获得鼠标位置

Vector3 mousePos = Input.mousePosition;

2、首先屏幕是二维的,因此需要将物体的位置转换为屏幕坐标

Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);

3、要计算相关角度,这里要分清楚方向,最简单的方式就是一开始让对象背对摄像机,即z轴向前,否则旋转方向与鼠标位置不一致,需要进行角度的转换才能正确显示,此处以最简单的方式讨论:

通常是将游戏对象作为原点,当z轴向前时,所求角度即是途中所示角度:

float x1 = mousePos.x - pos.x;
float y1 = mousePos.y - pos.y;
float angle = 90f; ;
if (y1 != 0) {
    angle = Mathf.Atan(x1 / y1);
    angle = (angle / Mathf.PI) * 180;
}

此处要注意三点:

(1)Mathf.Atan求出的是弧度,要将其转换为角度 

(2)分母不能为0,要特殊判断,因此初始化角度为90°

(3)求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值