制作2D追踪导弹
来源:互联网 发布:银行卡被网络支付盗刷 编辑:程序博客网 时间:2024/05/16 12:10
做子弹类的东西少不了角度的计算。3D可以直接使用Lookat() 很方便但是2D就要计算角度了。
要使用到 mathf.ATan() 和 mathf.ATan2() 。首先比较这两个函数的差异
================================================================================
引用:http://www.cnblogs.com/xpvincent/archive/2013/02/15/2912759.html
对于tan(θ) = y / x:
θ = ATan(y / x)求出的θ取值范围是[-PI/2, PI/2]。
θ = ATan2(y, x)求出的θ取值范围是[-PI, PI]。
当 (x, y) 在第一象限, 0 < θ < PI/2.
当 (x, y) 在第二象限 PI/2 < θ≤PI.
当 (x, y) 在第三象限, -PI < θ < -PI/2.
当 (x, y) 在第四象限, -PI/2 < θ < 0.
当点(x, y)在象限的边界也就是坐标轴上时:
当 y 是 0,x 为非负值, θ = 0.
当 y 是 0, x 是 负值, θ = PI.
当 y 是 正值, x 是 0, θ = PI/2.
当 y 是 负值, x 是 0, θ = -PI/2.
由此可知,一般情况下用ATan即可,当对所求出角度的取值范围有特殊要求时,应使用ATan2。
===================================================================================
大概就是这个样子,unity的 Atan2 和 Atan计算出来的值.
那么在unity里旋转 物体坐标系 localEulerAngles。计算他的角度让他对齐 目标就有办法了
angle = Mathf.Atan2(deltay, deltax); //计算角度 if (deltax > 0 && deltay > 0) //一象限 angle = Mathf.PI / 2 + angle; else if (deltax < 0 && deltay > 0) //二象限 angle = -3 * Mathf.PI / 2 + angle; else if (deltax < 0 && deltay < 0) //三象限 angle = angle + Mathf.PI / 2; else //四象限 angle = Mathf.PI / 2 + angle;
旋转的角度出来了
transform.localEulerAngles = new Vector3(0, 0, angle);然后移动 物体的物理坐标系,(也可以移动世界坐标系但是那样要将y计算到世界坐标系的y x轴上 比较麻烦),加速运动:
y=y+moveAcc;
transform.Translate(new Vector3(0,y,0) * Time.deltaTime);
但是这样 有一个问题 就是 如果一开始角度 不是指向目标 会一瞬间 指向目标 。 还没想好如何 让他有一个缓动的过程。。。 有谁看见了这个知道的话希望能教教我
这是使用物理的方法。
- 制作2D追踪导弹
- 导弹追踪问题
- 追踪导弹的实现
- 基于Vega的导弹追踪
- Unity导弹自动追踪算法
- Python小练习:追踪导弹仿真
- Unity3D导弹追踪目标(三维效果)
- 2D游戏制作
- RGB-D追踪相关
- Unity 2D游戏开发教程之摄像头追踪功能
- 【Unity】关于发射子弹、导弹追踪的逻辑(笔记)
- python导弹自动追踪以及实时图片旋转算法(吕万友)
- 2d游戏制作原理
- unity 制作2d动画
- Unity 2D游戏制作
- J2ME 2D小游戏入门之旅(五) 实现爆炸效果、并加入道具导弹
- J2ME 2D小游戏入门之旅(五)实现爆炸效果、并加入道具导弹
- 导弹发射-河南省第九届省赛D题
- Android动态加载dex技术初探
- Android中GridView实现长按多选功能
- 从C++转向java——3、判断与比较
- golang 的 channel 实现 生产者/消费者 模型
- hdu2883 kebab
- 制作2D追踪导弹
- linux如何编译和安装infer
- hdu 1075
- 1046. 划拳
- 大三下学期计划
- 类的实例和实例的成员变量的销毁
- linux命令学习
- 封装使用ViewHolder模式的Adapter组件,及用其快速实现聊天界面
- [Python入门]Chapter8 字符串