untiy 2d游戏平面直角坐标系的旋转应用
2023-09-27 14:23:28 时间
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));
代码原理
下图是整个界面的布置 曲线部分仅仅是当中的一条路径 只是能够通用(即能代表不同出发点的曲线)
再看以下的图(大家能够拿起笔画一画,把上图曲线中不同一时候刻的当前点和下一个点做一个连线,然后再把每个当前点放到以下图中的原点。下一个点依照连的线的方向放入以下图中的圆)
你是不是发现这样我就能把当前点和下一个点放到上图的坐标系中。然后依据切线获得角度了。
是不是非常有用的2D游戏算法呢
不谢 勿喷
欢迎进我的技术q群479853988一起装逼啊 。都是装逼界的等什么呢...
相关文章
- VR游戏暂无代表大作 开发技术仍需完善
- 0016-wasm-康威生命游戏
- 动视云张鹤翔:云游戏离我们还有多远?
- 玩TFBOYS游戏抽现金、iPad大奖 高德地图五一送福利
- 高德开放平台推出LBS游戏行业解决方案提供专业地图平台能力支持
- 【C语言】飞机大战游戏还原,源码在文末,应用“循环”与“数组”实现游戏开发,一起玩一下经典小游戏吧
- 无法执行的贪吃蛇游戏代码,求大神帮忙改动!
- unity 手写板 截取游戏画面 识别手写文字 全家桶
- Docker在英雄联盟游戏中的实践探索(三)
- 【Unity游戏开发教程】零基础带你从小白到超神22——旧动画和新动画组件的使用
- 【Unity游戏开发教程】零基础带你从小白到超神10——时间(Time类的使用)
- AcWing 181. 回转游戏
- 记录一下八款开源 Android 游戏引擎