2d旋转的应用

1 :条件1 (已知) 创建一个平面直角坐标系 左上角为(0,0),能够把一个加入了UIPanel组件的物体(名字叫Father)移至UIRoot左上角 Y和Z轴都旋转180度。这样你移动随便一个物体为Father的子物体到左上角 ,你会观察到子物体的坐标是(0,0,0)
        条件2(已知) 物体当前运动点currentPosition 物体下一个运动点nextPosition 的位置(物体运动的点能够有N个)运动的路径能够为不论什么类型的线 直线 曲线都OK
        求:让物体的方向始终对着下一个点,就是获得物体的旋转方向
        以下是答案的代码
if (currentPosition.x - nextPosition.x != 0)
{
angle = Mathf.Rad2Deg * Mathf.Atan((currentPosition.y - nextPosition.y) / (currentPosition.x - nextPosition.x));
}
else
{
angle = 0;
} if (nextPosition.x >= currentPosition.x && nextPosition.y <= currentPosition.y)
{
nowAngle = 360f - angle;//1
}
else if (nextPosition.x >= currentPosition.x && nextPosition.y >= currentPosition.y)
{
nowAngle = 90f - angle + 90f + 180f;//2
// print(angle);
}
else if (nextPosition.x <= currentPosition.x && nextPosition.y >= currentPosition.y)
{
nowAngle = 180f - angle;
}
else if (nextPosition.x <= currentPosition.x && nextPosition.y <= currentPosition.y)
{
nowAngle = 180f + (90f - angle) + 90f + 180f;
} transform.rotation = Quaternion.Euler(new Vector3(0, 0, nowAngle));

代码原理
下图是整个界面的布置 曲线部分仅仅是当中的一条路径 只是能够通用(即能代表不同出发点的曲线)

再看以下的图(大家能够拿起笔画一画,把上图曲线中不同一时候刻的当前点和下一个点做一个连线,然后再把每个当前点放到以下图中的原点。下一个点依照连的线的方向放入以下图中的圆)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


你是不是发现这样我就能把当前点和下一个点放到上图的坐标系中。然后依据切线获得角度了。

是不是非常有用的2D游戏算法呢


不谢 勿喷

欢迎进我的技术q群479853988一起装逼啊 。都是装逼界的等什么呢...

untiy 2d游戏平面直角坐标系的旋转应用的更多相关文章

  1. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...

  2. 2D游戏与3D游戏的区别 原文:https://zhidao.baidu.com/question/588490865.html

    2D和3D间有哪些不同点呢? 让我们来比较一下,共同找出它俩之间的不同点. 对玩家来说,2D技术和3D技术只是显示数据的方式而已,玩家都是通过二 维的平面显示器来观看它们.对制作者来说,二者的不同之处 ...

  3. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:Visual Studio 图形 API:Win2D MSDN 教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面你需要考虑图形.输入和网络 以及相对独立的 ...

  4. QLGame 2d Engine 搭建2d游戏原理

    大家好,2d引擎基于opengl(es) 3d技术,是因为这样比之前的ddraw有很多好处! 1.坐标采用浮点数,可以进行曲线移动 2.如果在ddraw的对图片进行缩放和旋转的时候,是基于点像素的操作 ...

  5. unity3d 2d游戏制作的模式

      经过了4个月不懈的努力,我和图灵教育合作的这本3D游戏开发书预计下个月就要出版了.这里MOMO先打一下广告,图灵的出版社编辑成员都非常给力,尤其是编辑小花为这本书付出了很大的努力,还有杨海玲老师, ...

  6. 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结

    前几天,个人著作<Unity3D/2D游戏开发从0到1(第二版)>经过七八个月的技术准备以及近3个月的日夜编写,在十一长假后终于完稿.今天抽出一点时间来,给广大热心小伙伴们汇报一下书籍概况 ...

  7. Siki_Unity_1-8_使用Unity开发2D游戏_PongGame

    Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...

  8. 2D游戏平滑的迷雾战争效果

    近期刚好有做2D游戏的点光源效果,然后就扩展一下.研究了一下战争迷雾的效果.主要是想实现相似魔兽争霸那种人物走动,然后黑色的战争迷雾随着人物的移动渐渐打开的效果.使用具有渐变透明图片作为光源来使得战争 ...

  9. 地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了

    地图四叉树一般用在GIS中,在游戏寻路中2D游戏中一般用2维数组就够了 四叉树对于区域查询,效率比较高. 原理图

随机推荐

  1. 【Linux】ssh建立隧道tunnel连接到内网设备

    root@192.168.1.105 建立隧道: ssh -l root -N -f -R 9103:127.0.0.1:2222 work@11.11.13.17 解析:把本地127.0.0.1:2 ...

  2. 将excel表导入到mysql中

    //导入excel表 方法一: )打开Excel另存为CSV文件 )将文件编码转化为utf8,用NotePad++打开csv文件,选择格式—转为utf8编码格式—保存 )在MySQL建表,字段的顺序要 ...

  3. Javascript Get or Set Checked Radio Value

    Description This pair of Javascript function can get or set the checked value of a group of radio bu ...

  4. Windows下 VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  5. Inno Setup入门(六)——在程序目录下创建文件夹

    创建文件夹可以使用[dirs]段实现,代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TES ...

  6. 网页屏蔽Backspace事件,输入框不屏蔽

    document.onkeydown = function (e) { var code; if (!e){ var e = window.event;} if (e.keyCode){ code = ...

  7. (原)python中不同文件之间使用所谓的全局变量

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/8108640.html 参考网址: https://www.cnblogs.com/20150705-y ...

  8. 得到类所在的jar包路径

    //理论上用class.getProtectionDomain().getCodeSource().getLocation().getFile();比较准.  //不过有两个需要注意的:  //1.返 ...

  9. <转>字节码指令

    本文转自:http://www.cnblogs.com/nazhizq/p/6525263.html 在llimits.h文件中定义了指令的类型.其实就是32个字节. typedef lu_int32 ...

  10. 给你出道题---N个数字的静态决策区分问题

    决策,是世界上最重要的事情. 走路分两步:看准方向,大步前进.看准方向的过程就是决策. 任何一个问题,都对应两个空间:解空间和决策空间.我们所要做的就是使用决策空间去划分解空间. 决策可以分成两类:单 ...