向量瞬秒炮的建造『猫猫瞬秒』
2019/07/08955 浏览游戏开发攻略
主体为四个零件。两个激光,两个主动转轴。

转轴一,控制水平角度的旋转。水平角度为代码里的角一,范围从-180到180。

转轴二,控制垂直角度的旋转。垂直角度为角二,范围从-180到180。

这个激光虽然叫做“瞄准”。其实它是定义局部坐标系的,保证在空间任意位置都可以瞄准,熟悉变换坐标系的盆友可以换用别的零件。要特别注意它的方向为大箭头的方向,-Y方向旋转向上。

“旋转点”激光,主要是确定这个旋转点和目标的位置。
这个地方也可以放武器,用上面的瞄准激光定位目标。
begincode;
debug:1;
name:猫猫瞬秒;
comment:『猫猫制作』;
1:=act 243.8.setEnemyType(Enum 0);
2:Vector3 a=act 243.8.getPosition();
3:Vector3 b=act 243.8.getTargetPos();
4:Vector3 a到b=fun vector3.minus(var b:var a);
5:Vector3 x轴=act 243.6.localToWorldDir(Vector3 1,0,0);
6:Vector3 y轴=act 243.6.localToWorldDir(Vector3 0,1,0);
7:Vector3 z轴=act 243.6.localToWorldDir(Vector3 0,0,1);
8:Float x=fun vector3.dot(var a到b:var x轴);
9:Float y=fun vector3.dot(var a到b:var y轴);
10:Float z=fun vector3.dot(var a到b:var z轴);
11:Vector3 敌人目标=fun creatVariable.Vector3(var x:var y:var z);
12:Vector3 xz面投影=fun creatVariable.Vector3(var x:Float 0:var z);
13:Float 角一=fun vector3.angle(var xz面投影:Vector3 0,0,1);
14:Float 角一2=fun vector3.angle(var xz面投影:Vector3 1,0,0);
15:Float 角二=fun vector3.angle(var 敌人目标:var xz面投影);
16:Float 角二2=fun vector3.angle(var 敌人目标:Vector3 0,1,0);
17:if fun float.gt(var 角一2:Float 90);
18: Float 角一=fun float.multiply(var 角一:Float -1);
19:if fun float.gt(var 角二2:Float 90);
20: Float 角二=fun float.multiply(var 角二:Float -1);
21:Float 角一=fun float.division(var 角一:Float 90);
22:Float 角二=fun float.division(var 角二:Float 90);
23:Vector3 方向=fun creatVariable.Vector3(var 角一:var 角二:Float 0);
24:=act 250.13.rotate(var 方向);
25:=act 222.4.rotate(var 角一:Enum 1);
26:=act 222.5.rotate(var 角二:Enum 1);
endcode