博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
坐标旋转
阅读量:5292 次
发布时间:2019-06-14

本文共 1627 字,大约阅读时间需要 5 分钟。

2D对象的旋转

public Transform from;    public Transform to;    public Transform fromTop;    public Transform toTop;    float speed = 1f;    private void Update()    {     //方法是求两向量之间的夹角        Vector3 fromScreenPosition = RectTransformUtility.WorldToScreenPoint(Camera.main, from.position);        Vector3 toScreenPosition = RectTransformUtility.WorldToScreenPoint(Camera.main, to.position);        Vector3 fromTopScreenPosition = RectTransformUtility.WorldToScreenPoint(Camera.main, fromTop.position);        Vector3 toTopScreenPosition = RectTransformUtility.WorldToScreenPoint(Camera.main, toTop.position); //Input.mousePosition;        //第一条向量        Vector3 fromVector = fromTopScreenPosition - fromScreenPosition;        //第二条向量        Vector3 toVector = toTopScreenPosition - toScreenPosition;        print("两向量之间的夹角 = " + Vector3.Angle(fromVector, toVector));        Quaternion quaternion = Quaternion.FromToRotation(fromVector, toVector);        from.Rotate(quaternion.eulerAngles * speed);    }

在计算2D对象的屏幕坐标时,无论是使用RectTransformUtility.WorldToScreenPoint(Camera.main , from.position)还是使用Camera.main.WorldToScreenPoint(from.position)

Canvas的Render Camera是必须赋值摄像机的,不能为空!不然计算的屏幕坐标是不正确的!!!

同理,3D的旋转也可以计算两向量之间的夹角

//top.position为人物正方向点(z轴)的位置//transform.position为人物所在位置//targertPosition为目标点的位置Vector3 form = top.position - transform.position;Vector3 to = targetPosition - transform.position;float allangle = Vector3.Angle(form, to);

 2D计算夹角是要保证向量的Z轴是一样的,最好为0,即为同一个水平面

 3D计算夹角是要保证y轴是一样的,即为同一个水平面,上面的3D计算夹角中是要保证top、transform、targetPosition这三个对象的坐标的Y值是一样的!不然计算的夹角是有问题的,因为不在同一个水平面!

转载于:https://www.cnblogs.com/MrZivChu/p/rotation2.html

你可能感兴趣的文章
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Shell命令-内置命令及其它之watch、date
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
第8章-方法
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Microsoft SQL Server Transact-SQL
查看>>
Font: a C++ class
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用
查看>>
【NodeJS】http-server.cmd
查看>>
iOS bundle identifier 不一致,target general的Bundle Identifier后面总是有三条灰色的横线...
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
xpath
查看>>
IOS开发基础知识--碎片25
查看>>
对比传统的Xilinx AMP方案和OPENAMP方案-xapp1078和ug1186
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
js基础
查看>>