|
楼主 |
发表于 2011-7-25 19:23:02
|
显示全部楼层
水2!
1.圆:
第一种:
到顶点的距离等于定长的点的集合(我记得数学书上是这样教的……)
(S_x,S_y)是圆心坐标,R是圆半径
事件
时间 - 每当游戏逝去 0.03 秒
条件
动作
设置 ang = (ang + 5.00)
设置 U_x = (S_x + (R × (Cos(ang))))
设置 U_y = (S_y + (R × (Sin(ang))))
单位 - 设置 U 的X坐标为U_x
单位 - 设置 U 的Y坐标为U_y
圆的第二种方法:物理上提到圆周运动的特点是,物体在每点的运动速度的方向总是和过该点的半径垂直,所以,圆周运动也可以是每个运动周期,单位向垂直于半径的方向做一个距离为无穷小的位移……(这样是一个扩大的螺旋函数)
魔兽里并不存在无穷小,于是这样的移动方式,即使距离是0.01,物体也会离圆心越来越远……
但是如果并不是垂直半径运动,而是成一个略小于90的角度,使得每次位移前后与圆心的距离不变,就能完成圆周运动……
这样形成的圆周运动,半径和角度的函数关系的计算比较麻烦,也许你认为不如第一种方法实用,但是这样的圆周运动有个有趣的特性:你可以不用计算半径,随便定个数值,实际运作起来的时候,你会发现,单位的当前旋转半径会逐渐接近理论的旋转半径,一点点靠近……
因此在需要平滑改变旋转半径的时候,这种方法更简便……
s是每个周期的位移,ang是关系的半径大小的角度,P0是圆心
事件
时间 - 每当游戏逝去 0.01 秒
条件
动作
设置 P1 = (U 的位置)
设置 angle2 = ((P1 到 P0 的角度) + ang)
-------- 上面这个ang就是决定了最终旋转半径,至于有什么样的函数关系就不知道了 --------
设置 U_x = (U_x + (s × (Cos(angle2))))
设置 U_y = (U_y + (s × (Sin(angle2))))
单位 - 设置 U 的X坐标为 U_x
单位 - 设置 U 的Y坐标为 U_y
点 - 清除P1
2.椭圆:
其实把圆压扁了就是椭圆……于是用圆的公式,但x,y轴系数不同步就能创造一个椭圆
2×a,2×b分别是椭圆的长和宽,Angle是椭圆的朝向角度,P0为椭圆中心
事件
时间 - 每当游戏逝去 0.03 秒
条件
动作
设置 ang = (ang + 5.00)
设置 U_x = ((P0 的x轴坐标) + (a × (Cos(ang))))
设置 U_y = ((P0 的y轴坐标) + (b × (Sin(ang))))
-------- 角度的调整(没有下边这个,轨迹只能是水平或者竖直的) --------
点 - 移动 P1 到(U_x,U_y)
设置 P2 = (从 P1 开始,距离 (P1 和 P0 之间的距离) ,方向为 ((P1 到 P0 的角度) + Angle) 度的位移处)
单位 - 设置 U 的X坐标为 (P2 的X轴坐标)
单位 - 设置 U 的Y坐标为 (P2 的Y轴坐标)
点 - 清除P1
点 - 清除P2
3.站立的圆:仔细看这个函数和圆的很像,不过是把一条坐标轴的改成了改变飞行高度……还要加上旋转的部分……
R是旋转半径,H是圆心高度(最好大于R,不然就进土里了),P0是圆心,angle2是圆的旋转角
事件
时间 - 每当游戏逝去 0.03 秒
条件
动作
设置 angle = (angle + 5.00)
设置 U_x = (S_x + (R × (Cos(angle))))
动画 - 改变 U 的飞行高度为 (H + (R × (Sin(angle)))) ,变换速率: 99999.00
设置 U_y = S_y
-------- 角度的调整(没有下边这个,轨迹只能是水平或者竖直的) --------
点 - 移动 P1 到(U_x,U_y)
设置 P2 = (从 P0 开始,距离 (P0 和 P1 之间的距离) ,方向为 ((P0 到 P1 的角度) + angle2) 度的位移处)
单位 - 设置 U 的X坐标为 (P2 的X轴坐标)
单位 - 设置 U 的Y坐标为 (P2 的Y轴坐标)
点 - 清除P1
点 - 清除P2 |
|