Violet Vreath is Shooter Game for Windows XP+(個人制作シューティングゲーム)
Révision | 197d252fe47fa4cb7d67dccc66d191327d6762dd (tree) |
---|---|
l'heure | 2022-05-12 23:36:46 |
Auteur | gecchi <gecchi@boch...> |
Commiter | gecchi |
自機ホーミングレーザー周りちょっと整理
@@ -19,32 +19,31 @@ namespace GgafDx { | ||
19 | 19 | class GeoVehicle : public ActorVehicle { |
20 | 20 | |
21 | 21 | public: |
22 | - | |
22 | + /** [r]移動速度 */ | |
23 | 23 | velo _velo; |
24 | - acce _acce; | |
25 | - | |
26 | - /** [r/w]X軸方向移動速度 */ | |
27 | - velo _velo_x; | |
28 | - /** [r/w]Y軸方向移動速度 */ | |
29 | - velo _velo_y; | |
30 | - /** [r/w]Z軸方向移動速度 */ | |
31 | - velo _velo_z; | |
32 | - /** [r/w]移動速度上限 */ | |
24 | + /** [r]移動速度上限 */ | |
33 | 25 | velo _top_velo; |
34 | - /** [r/w]移動速度下限 */ | |
26 | + /** [r]移動速度下限 */ | |
35 | 27 | velo _bottom_velo; |
36 | - | |
37 | - /** [r/w]X軸方向移動加速度 */ | |
38 | - acce _acce_x; | |
39 | - /** [r/w]Y軸方向移動加速度 */ | |
40 | - acce _acce_y; | |
41 | - /** [r/w]Z軸方向移動加速度 */ | |
42 | - acce _acce_z; | |
43 | - /** [r/w]移動加速度上限*/ | |
28 | + /** [r]移動速度方向ベクトルX軸成分 */ | |
29 | + velo _velo_vc_x; | |
30 | + /** [r]移動速度方向ベクトルY軸成分 */ | |
31 | + velo _velo_vc_y; | |
32 | + /** [r]移動速度方向ベクトルZ軸成分 */ | |
33 | + velo _velo_vc_z; | |
34 | + | |
35 | + /** [r]移動加速度 */ | |
36 | + acce _acce; | |
37 | + /** [r]移動加速度上限*/ | |
44 | 38 | acce _top_acce; |
45 | - /** [r/w]移動加速度下限*/ | |
39 | + /** [r]移動加速度下限*/ | |
46 | 40 | acce _bottom_acce; |
47 | - | |
41 | + /** [r]移動加速度方向ベクトルX軸成分 */ | |
42 | + acce _acce_vc_x; | |
43 | + /** [r]移動加速度方向ベクトルY軸成分 */ | |
44 | + acce _acce_vc_y; | |
45 | + /** [r]移動加速度方向ベクトルZ軸成分 */ | |
46 | + acce _acce_vc_z; | |
48 | 47 | |
49 | 48 | public: |
50 | 49 | /** |
@@ -68,23 +67,50 @@ public: | ||
68 | 67 | void forceAcceRange(acce prm_acce01, acce prm_acce02); |
69 | 68 | |
70 | 69 | /** |
71 | - * X軸Y軸Z軸方向の移動速度を目標座標と移動速度で設定する。 | |
72 | - * @param prm_tx 目標X座標 | |
73 | - * @param prm_ty 目標Y座標 | |
74 | - * @param prm_tz 目標Z座標 | |
70 | + * 移動方向を座標、移動速度を値で設定する。 | |
71 | + * @param prm_tx 移動方向X座標 | |
72 | + * @param prm_ty 移動方向Y座標 | |
73 | + * @param prm_tz 移動方向Z座標 | |
75 | 74 | * @param prm_velo 移動速度 |
76 | 75 | */ |
77 | 76 | void setVeloTwd(coord prm_tx, coord prm_ty, coord prm_tz, velo prm_velo); |
78 | 77 | |
78 | + /** | |
79 | + * 移動方向を軸回転(Rz, Ry)、移動速度を値で設定する。 | |
80 | + * @param prm_rz 移動方向z軸回転値 | |
81 | + * @param prm_ry 移動方向y軸回転値 | |
82 | + * @param prm_velo 移動速度 | |
83 | + */ | |
79 | 84 | void setVeloTwd(angle prm_rz, angle prm_ry, velo prm_velo); |
80 | 85 | |
81 | - void setVelo(velo prm_velo_x, velo prm_velo_y, velo prm_velo_z); | |
86 | + | |
87 | + /** | |
88 | + * XYZ軸ベクトル成分で、移動速度を設定する . | |
89 | + * @param prm_velo_vc_x | |
90 | + * @param prm_velo_vc_y | |
91 | + * @param prm_velo_vc_z | |
92 | + */ | |
93 | + void setVeloByVc(velo prm_velo_vc_x, velo prm_velo_vc_y, velo prm_velo_vc_z); | |
82 | 94 | |
83 | 95 | void setVeloZero(); |
84 | 96 | |
97 | + | |
98 | + /** | |
99 | + * 移動方向を座標、移動加速度を値で設定する。 | |
100 | + * @param prm_tx 移動方向X座標 | |
101 | + * @param prm_ty 移動方向Y座標 | |
102 | + * @param prm_tz 移動方向Z座標 | |
103 | + * @param prm_acce 移動加速度 | |
104 | + */ | |
85 | 105 | void setAcceTwd(coord prm_tx, coord prm_ty, coord prm_tz, acce prm_acce); |
86 | 106 | |
87 | - void setAcce(acce prm_acce_x, acce prm_acce_y, acce prm_acce_z); | |
107 | + /** | |
108 | + * XYZ軸ベクトル成分で、移動加速度を設定する . | |
109 | + * @param prm_acce_vc_x | |
110 | + * @param prm_acce_vc_y | |
111 | + * @param prm_acce_vc_z | |
112 | + */ | |
113 | + void setAcceByVc(acce prm_acce_vc_x, acce prm_acce_vc_y, acce prm_acce_vc_z); | |
88 | 114 | |
89 | 115 | void setAcceZero(); |
90 | 116 |
@@ -404,9 +404,10 @@ public: | ||
404 | 404 | } |
405 | 405 | |
406 | 406 | /** |
407 | - * 距離の近似を計算 . | |
408 | - * @param x | |
409 | - * @param y | |
407 | + * 原点からの距離(2D)の近似を計算 . | |
408 | + * sqrt() を使用するよりも速い。 | |
409 | + * @param x X座標 | |
410 | + * @param y Y座標 | |
410 | 411 | * @return |
411 | 412 | */ |
412 | 413 | static int getApproxDistanceFromOrigin(int x, int y) { |
@@ -420,9 +421,11 @@ public: | ||
420 | 421 | } |
421 | 422 | |
422 | 423 | /** |
423 | - * 距離の近似を計算(※ 引数がすべて正と予めわかっている場合のちょい速いバージョン) . | |
424 | - * @param abs_x | |
425 | - * @param abs_y | |
424 | + * 原点からの距離(2D)の近似を計算 . | |
425 | + * sqrt() を使用するよりも速い。 | |
426 | + * 引数がすべて正と予めわかっている場合のちょい速いバージョン | |
427 | + * @param abs_x 正のX座標 | |
428 | + * @param abs_y 正のY座標 | |
426 | 429 | * @return 原点からの距離の近似 |
427 | 430 | */ |
428 | 431 | static int getApproxDistanceFromOrigin2(int abs_x, int abs_y) { |
@@ -433,8 +436,20 @@ public: | ||
433 | 436 | return (int)((d + 512) >> 10); |
434 | 437 | } |
435 | 438 | |
439 | + /** | |
440 | + * 距離近似値計算(2D) . | |
441 | + * @param x1 | |
442 | + * @param y1 | |
443 | + * @param x2 | |
444 | + * @param y2 | |
445 | + * @return 距離の近似 | |
446 | + */ | |
447 | + static coord getApproxDistance(coord x1, coord y1, coord x2, coord y2) { | |
448 | + return Util::getApproxDistanceFromOrigin(x2-x1, y2-y1); | |
449 | + } | |
436 | 450 | |
437 | -// 引数3つバージョンは速度的にsqrt() と同じ。したがって制度が良い sqrt() を使うべき | |
451 | +// 引数3つバージョンは速度的にsqrt() と同じ。 | |
452 | +// したがって精度が良い sqrt() を使うべき考えて、簡易版をいったん削除 | |
438 | 453 | |
439 | 454 | // /** |
440 | 455 | // * 距離の近似を計算(3D) . |
@@ -458,17 +473,6 @@ public: | ||
458 | 473 | // return Util::getApproxDistanceFromOrigin2(getApproxDistanceFromOrigin2(abs_x, abs_y), abs_z); |
459 | 474 | // } |
460 | 475 | |
461 | - /** | |
462 | - * 距離近似値計算(2D) . | |
463 | - * @param x1 | |
464 | - * @param y1 | |
465 | - * @param x2 | |
466 | - * @param y2 | |
467 | - * @return 距離の近似 | |
468 | - */ | |
469 | - static coord getApproxDistance(coord x1, coord y1, coord x2, coord y2) { | |
470 | - return Util::getApproxDistanceFromOrigin(x2-x1, y2-y1); | |
471 | - } | |
472 | 476 | // |
473 | 477 | // /** |
474 | 478 | // * 距離の近似を計算(3D) . |
@@ -5,27 +5,28 @@ | ||
5 | 5 | using namespace GgafDx; |
6 | 6 | |
7 | 7 | GeoVehicle::GeoVehicle(GeometricActor* prm_pActor) : ActorVehicle(prm_pActor) { |
8 | - _velo_x = 0; | |
9 | - _velo_y = 0; | |
10 | - _velo_z = 0; | |
11 | - _acce_x = 0; | |
12 | - _acce_y = 0; | |
13 | - _acce_z = 0; | |
14 | - //移動速度上限 | |
8 | + _velo = 0; | |
15 | 9 | _top_velo = INT_MAX; |
16 | - //移動速度下限 | |
17 | 10 | _bottom_velo = 0; |
18 | - //移動加速度上限 | |
11 | + _velo_vc_x = 0; | |
12 | + _velo_vc_y = 0; | |
13 | + _velo_vc_z = 0; | |
14 | + _acce = 0; | |
19 | 15 | _top_acce = INT_MAX; |
20 | - //移動加速度下限 | |
21 | 16 | _bottom_acce = 0; |
22 | - | |
23 | - _velo = 0; | |
24 | - _acce = 0; | |
17 | + _acce_vc_x = 0; | |
18 | + _acce_vc_y = 0; | |
19 | + _acce_vc_z = 0; | |
25 | 20 | } |
26 | 21 | |
27 | 22 | |
28 | 23 | void GeoVehicle::forceVeloRange(velo prm_velo01, velo prm_velo02) { |
24 | +#ifdef MY_DEBUG | |
25 | + if (prm_velo01 < 0 || prm_velo02 < 0) { | |
26 | + throwCriticalException("GeoVehicle::forceVeloRange() 負の速度を範囲設定することはできません。" | |
27 | + " prm_velo01="<<prm_velo01<<",prm_velo02="<<prm_velo02<<""); | |
28 | + } | |
29 | +#endif | |
29 | 30 | if (prm_velo01 < prm_velo02) { |
30 | 31 | _top_velo = prm_velo02; |
31 | 32 | _bottom_velo = prm_velo01; |
@@ -33,16 +34,17 @@ void GeoVehicle::forceVeloRange(velo prm_velo01, velo prm_velo02) { | ||
33 | 34 | _top_velo = prm_velo01; |
34 | 35 | _bottom_velo = prm_velo02; |
35 | 36 | } |
36 | -#ifdef MY_DEBUG | |
37 | - if (_top_velo == 0 ) { | |
38 | - _TRACE_("【警告】GeoVehicle::forceVeloRange() 。_top_velo が 0 っておかしいのでは? prm_velo01="<<prm_velo01<<",prm_velo02="<<prm_velo02<<""); | |
39 | - } | |
40 | -#endif | |
41 | 37 | //再設定して範囲内に補正 |
42 | - setVelo(_velo_x, _velo_y, _velo_z); | |
38 | + setVeloByVc(_velo_vc_x, _velo_vc_y, _velo_vc_z); | |
43 | 39 | } |
44 | 40 | |
45 | 41 | void GeoVehicle::forceAcceRange(acce prm_acce01, acce prm_acce02) { |
42 | +#ifdef MY_DEBUG | |
43 | + if (prm_acce01 < 0 || prm_acce02 < 0) { | |
44 | + throwCriticalException("GeoVehicle::forceAcceRange() 負の加速度を範囲設定することはできません。" | |
45 | + " prm_acce01="<<prm_acce01<<",prm_acce02="<<prm_acce02<<""); | |
46 | + } | |
47 | +#endif | |
46 | 48 | if (prm_acce01 < prm_acce02) { |
47 | 49 | _top_acce = prm_acce02; |
48 | 50 | _bottom_acce = prm_acce01; |
@@ -51,28 +53,31 @@ void GeoVehicle::forceAcceRange(acce prm_acce01, acce prm_acce02) { | ||
51 | 53 | _bottom_acce = prm_acce02; |
52 | 54 | } |
53 | 55 | //再設定して範囲内に補正 |
54 | - setAcce(_acce_x, _acce_y, _acce_z); | |
56 | + setAcceByVc(_acce_vc_x, _acce_vc_y, _acce_vc_z); | |
55 | 57 | } |
56 | 58 | |
57 | 59 | |
58 | 60 | void GeoVehicle::setVeloTwd(coord prm_tx, coord prm_ty, coord prm_tz, velo prm_velo) { |
61 | + if (prm_velo == 0) { | |
62 | + _velo_vc_x = _bottom_velo; | |
63 | + _velo_vc_y = 0; | |
64 | + _velo_vc_z = 0; | |
65 | + _velo = _bottom_velo; | |
66 | + return; | |
67 | + } | |
59 | 68 | double vx = prm_tx - _pActor->_x; |
60 | 69 | double vy = prm_ty - _pActor->_y; |
61 | 70 | double vz = prm_tz - _pActor->_z; |
62 | 71 | double p = vx*vx + vy*vy + vz*vz; |
63 | 72 | if (ZEROd_EQ(p)) { |
64 | - if (_acce == 0) { | |
65 | - _velo_x = _bottom_velo; | |
66 | - _velo_y = 0; | |
67 | - _velo_z = 0; | |
68 | - _velo = _bottom_velo; | |
69 | - return; | |
70 | - } | |
71 | - p = 1.0*_acce_x*_acce_x + 1.0*_acce_y*_acce_y + 1.0*_acce_z*_acce_z; | |
73 | + //速度が0になってしまったら | |
74 | + //加速度の方向ベクトルに最低速度を設定 | |
75 | + p = 1.0*_acce_vc_x*_acce_vc_x + 1.0*_acce_vc_y*_acce_vc_y + 1.0*_acce_vc_z*_acce_vc_z; | |
72 | 76 | if (ZEROd_EQ(p)) { |
73 | - _velo_x = _bottom_velo; | |
74 | - _velo_y = 0; | |
75 | - _velo_z = 0; | |
77 | + //加速度も0なら、あきらめて _velo_vc_x に最低速度を設定 | |
78 | + _velo_vc_x = _bottom_velo; | |
79 | + _velo_vc_y = 0; | |
80 | + _velo_vc_z = 0; | |
76 | 81 | _velo = _bottom_velo; |
77 | 82 | return; |
78 | 83 | } |
@@ -83,41 +88,30 @@ void GeoVehicle::setVeloTwd(coord prm_tx, coord prm_ty, coord prm_tz, velo prm_v | ||
83 | 88 | } else if (prm_velo < _bottom_velo) { |
84 | 89 | velo_xyz = _bottom_velo; |
85 | 90 | } |
86 | - if (velo_xyz == 0) { | |
87 | - _velo_x = _bottom_velo; | |
88 | - _velo_y = 0; | |
89 | - _velo_z = 0; | |
90 | - _velo = _bottom_velo; | |
91 | - } else { | |
92 | - double t = (velo_xyz / sqrt(p)); | |
93 | - _velo_x = t * vx; | |
94 | - _velo_y = t * vy; | |
95 | - _velo_z = t * vz; | |
96 | - _velo = velo_xyz; | |
97 | - } | |
91 | + double t = (velo_xyz / sqrt(p)); | |
92 | + _velo_vc_x = t * vx; | |
93 | + _velo_vc_y = t * vy; | |
94 | + _velo_vc_z = t * vz; | |
95 | + _velo = velo_xyz; | |
98 | 96 | } |
99 | 97 | |
100 | 98 | void GeoVehicle::setVeloTwd(angle prm_rz, angle prm_ry, velo prm_velo) { |
101 | 99 | float vx, vy, vz; |
102 | 100 | UTIL::convRzRyToVector(prm_rz, prm_ry, vx, vy, vz); |
103 | - setVelo(vx*prm_velo, vy*prm_velo, vz*prm_velo); | |
101 | + setVeloByVc(vx*prm_velo, vy*prm_velo, vz*prm_velo); | |
104 | 102 | } |
105 | 103 | |
106 | -void GeoVehicle::setVelo(velo prm_velo_x, velo prm_velo_y, velo prm_velo_z) { | |
107 | - double p = 1.0*prm_velo_x*prm_velo_x + 1.0*prm_velo_y*prm_velo_y + 1.0*prm_velo_z*prm_velo_z; | |
104 | +void GeoVehicle::setVeloByVc(velo prm_velo_vc_x, velo prm_velo_vc_y, velo prm_velo_vc_z) { | |
105 | + double p = 1.0*prm_velo_vc_x*prm_velo_vc_x + 1.0*prm_velo_vc_y*prm_velo_vc_y + 1.0*prm_velo_vc_z*prm_velo_vc_z; | |
108 | 106 | if (ZEROd_EQ(p)) { |
109 | - if (_acce == 0) { | |
110 | - _velo_x = _bottom_velo; | |
111 | - _velo_y = 0; | |
112 | - _velo_z = 0; | |
113 | - _velo = _bottom_velo; | |
114 | - return; | |
115 | - } | |
116 | - p = 1.0*_acce_x*_acce_x + 1.0*_acce_y*_acce_y + 1.0*_acce_z*_acce_z; | |
107 | + //速度が0になってしまったら | |
108 | + //加速度の方向ベクトルに最低速度を設定 | |
109 | + p = 1.0*_acce_vc_x*_acce_vc_x + 1.0*_acce_vc_y*_acce_vc_y + 1.0*_acce_vc_z*_acce_vc_z; | |
117 | 110 | if (ZEROd_EQ(p)) { |
118 | - _velo_x = _bottom_velo; | |
119 | - _velo_y = 0; | |
120 | - _velo_z = 0; | |
111 | + //加速度も0なら、あきらめて _velo_vc_x に最低速度を設定 | |
112 | + _velo_vc_x = _bottom_velo; | |
113 | + _velo_vc_y = 0; | |
114 | + _velo_vc_z = 0; | |
121 | 115 | _velo = _bottom_velo; |
122 | 116 | return; |
123 | 117 | } |
@@ -125,29 +119,28 @@ void GeoVehicle::setVelo(velo prm_velo_x, velo prm_velo_y, velo prm_velo_z) { | ||
125 | 119 | double velo_xyz = sqrt(p); |
126 | 120 | if (velo_xyz > _top_velo) { |
127 | 121 | double t = _top_velo/velo_xyz; |
128 | - _velo_x = t * prm_velo_x; | |
129 | - _velo_y = t * prm_velo_y; | |
130 | - _velo_z = t * prm_velo_z; | |
122 | + _velo_vc_x = t * prm_velo_vc_x; | |
123 | + _velo_vc_y = t * prm_velo_vc_y; | |
124 | + _velo_vc_z = t * prm_velo_vc_z; | |
131 | 125 | _velo = _top_velo; |
132 | 126 | return; |
133 | 127 | } else if (velo_xyz < _bottom_velo) { |
134 | 128 | double t = _bottom_velo/velo_xyz; |
135 | - _velo_x = t * prm_velo_x; | |
136 | - _velo_y = t * prm_velo_y; | |
137 | - _velo_z = t * prm_velo_z; | |
129 | + _velo_vc_x = t * prm_velo_vc_x; | |
130 | + _velo_vc_y = t * prm_velo_vc_y; | |
131 | + _velo_vc_z = t * prm_velo_vc_z; | |
138 | 132 | _velo = _bottom_velo; |
139 | 133 | return; |
140 | 134 | } else { |
141 | - double t = 1.0; | |
142 | - _velo_x = t * prm_velo_x; | |
143 | - _velo_y = t * prm_velo_y; | |
144 | - _velo_z = t * prm_velo_z; | |
135 | + _velo_vc_x = prm_velo_vc_x; | |
136 | + _velo_vc_y = prm_velo_vc_y; | |
137 | + _velo_vc_z = prm_velo_vc_z; | |
145 | 138 | _velo = velo_xyz; |
146 | 139 | return; |
147 | 140 | } |
148 | 141 | } |
149 | 142 | void GeoVehicle::setVeloZero() { |
150 | - setVelo(0,0,0); | |
143 | + setVeloByVc(0,0,0); | |
151 | 144 | } |
152 | 145 | |
153 | 146 | void GeoVehicle::setAcceTwd(coord prm_tx, coord prm_ty, coord prm_tz, acce prm_acce) { |
@@ -162,68 +155,66 @@ void GeoVehicle::setAcceTwd(coord prm_tx, coord prm_ty, coord prm_tz, acce prm_a | ||
162 | 155 | double vz = prm_tz - _pActor->_z; |
163 | 156 | double p = vx*vx + vy*vy + vz*vz; |
164 | 157 | if (ZEROd_EQ(p)) { |
165 | - _acce_x = _bottom_acce; | |
166 | - _acce_y = 0; | |
167 | - _acce_z = 0; | |
158 | + _acce_vc_x = _bottom_acce; | |
159 | + _acce_vc_y = 0; | |
160 | + _acce_vc_z = 0; | |
168 | 161 | _acce = _bottom_acce; |
169 | 162 | } else { |
170 | 163 | double t = (acce_xyz / sqrt(vx*vx + vy*vy + vz*vz)); |
171 | - _acce_x = t * vx; | |
172 | - _acce_y = t * vy; | |
173 | - _acce_z = t * vz; | |
164 | + _acce_vc_x = t * vx; | |
165 | + _acce_vc_y = t * vy; | |
166 | + _acce_vc_z = t * vz; | |
174 | 167 | _acce = acce_xyz; |
175 | 168 | } |
176 | 169 | } |
177 | 170 | |
178 | -void GeoVehicle::setAcce(acce prm_acce_x, acce prm_acce_y, acce prm_acce_z) { | |
179 | - double p = 1.0 * prm_acce_x * prm_acce_x + 1.0 * prm_acce_y * prm_acce_y + 1.0 * prm_acce_z * prm_acce_z; | |
171 | +void GeoVehicle::setAcceByVc(acce prm_acce_vc_x, acce prm_acce_vc_y, acce prm_acce_vc_z) { | |
172 | + double p = 1.0 * prm_acce_vc_x * prm_acce_vc_x + 1.0 * prm_acce_vc_y * prm_acce_vc_y + 1.0 * prm_acce_vc_z * prm_acce_vc_z; | |
180 | 173 | if (ZEROd_EQ(p)) { |
181 | - _acce_x = _bottom_acce; | |
182 | - _acce_y = 0; | |
183 | - _acce_z = 0; | |
174 | + _acce_vc_x = _bottom_acce; | |
175 | + _acce_vc_y = 0; | |
176 | + _acce_vc_z = 0; | |
184 | 177 | _acce = _bottom_acce; |
185 | 178 | } else { |
186 | 179 | double acce_xyz = sqrt(p); |
187 | 180 | if (acce_xyz > _top_acce) { |
188 | 181 | double t = _top_acce/acce_xyz; |
189 | - _acce_x = t * prm_acce_x; | |
190 | - _acce_y = t * prm_acce_y; | |
191 | - _acce_z = t * prm_acce_z; | |
182 | + _acce_vc_x = t * prm_acce_vc_x; | |
183 | + _acce_vc_y = t * prm_acce_vc_y; | |
184 | + _acce_vc_z = t * prm_acce_vc_z; | |
192 | 185 | _acce = _top_acce; |
193 | 186 | } else if (acce_xyz < _bottom_acce) { |
194 | 187 | double t = _bottom_acce/acce_xyz; |
195 | - _acce_x = t * prm_acce_x; | |
196 | - _acce_y = t * prm_acce_y; | |
197 | - _acce_z = t * prm_acce_z; | |
188 | + _acce_vc_x = t * prm_acce_vc_x; | |
189 | + _acce_vc_y = t * prm_acce_vc_y; | |
190 | + _acce_vc_z = t * prm_acce_vc_z; | |
198 | 191 | _acce = _bottom_acce; |
199 | 192 | } else { |
200 | - double t = 1.0; | |
201 | - _acce_x = t * prm_acce_x; | |
202 | - _acce_y = t * prm_acce_y; | |
203 | - _acce_z = t * prm_acce_z; | |
193 | + _acce_vc_x = prm_acce_vc_x; | |
194 | + _acce_vc_y = prm_acce_vc_y; | |
195 | + _acce_vc_z = prm_acce_vc_z; | |
204 | 196 | _acce = acce_xyz; |
205 | 197 | return; |
206 | 198 | } |
207 | 199 | } |
208 | 200 | } |
201 | + | |
209 | 202 | void GeoVehicle::setAcceZero() { |
210 | - _acce_x = _bottom_acce; | |
211 | - _acce_y = 0; | |
212 | - _acce_z = 0; | |
203 | + _acce_vc_x = _bottom_acce; | |
204 | + _acce_vc_y = 0; | |
205 | + _acce_vc_z = 0; | |
213 | 206 | _acce = _bottom_acce; |
214 | 207 | } |
215 | 208 | |
216 | - | |
217 | 209 | void GeoVehicle::behave() { |
218 | 210 | if (_acce != 0) { |
219 | - setVelo(_velo_x+_acce_x, _velo_y+_acce_y, _velo_z+_acce_z); | |
211 | + setVeloByVc(_velo_vc_x+_acce_vc_x, _velo_vc_y+_acce_vc_y, _velo_vc_z+_acce_vc_z); | |
220 | 212 | } |
221 | 213 | //Actorに反映 |
222 | - _pActor->_x += _velo_x; | |
223 | - _pActor->_y += _velo_y; | |
224 | - _pActor->_z += _velo_z; | |
214 | + _pActor->_x += _velo_vc_x; | |
215 | + _pActor->_y += _velo_vc_y; | |
216 | + _pActor->_z += _velo_vc_z; | |
225 | 217 | } |
226 | 218 | |
227 | - | |
228 | 219 | GeoVehicle::~GeoVehicle() { |
229 | 220 | } |
@@ -72,7 +72,7 @@ void SmpActor2::processBehavior() { | ||
72 | 72 | |
73 | 73 | if (GgafDx::Input::isPressedKey(DIK_A)) { |
74 | 74 | pGeoVehicle->forceVeloRange(0, PX_C(3)); |
75 | - pGeoVehicle->setAcce(PX_C(0.01), PX_C(0.02), PX_C(0)); | |
75 | + pGeoVehicle->setAcceByVc(PX_C(0.01), PX_C(0.02), PX_C(0)); | |
76 | 76 | |
77 | 77 | } |
78 | 78 | _TRACE_("x,y,z="<<_x<<", "<<_y<<", "<<_z); |
@@ -25,10 +25,10 @@ using namespace VioletVreath; | ||
25 | 25 | |
26 | 26 | const velo MyBunshinWateringLaserChip001::MAX_VELO_RENGE = PX_C(512); //この値を大きくすると、最高速度が早くなる。 |
27 | 27 | const double MyBunshinWateringLaserChip001::INV_MAX_VELO_RENGE = 1.0 / MAX_VELO_RENGE; |
28 | -const int MyBunshinWateringLaserChip001::R_MAX_ACCE = 15; //この値を大きくすると、カーブが緩くなる | |
29 | -const velo MyBunshinWateringLaserChip001::INITIAL_VELO = MAX_VELO_RENGE*0.5; //レーザー発射時の初期速度 | |
28 | +const int MyBunshinWateringLaserChip001::R_MAX_ACCE = 16; //この値を大きくすると、カーブが緩くなる | |
29 | +const velo MyBunshinWateringLaserChip001::INITIAL_VELO = MAX_VELO_RENGE*0.6; //レーザー発射時の初期速度 | |
30 | 30 | const double MyBunshinWateringLaserChip001::RR_MAX_ACCE = 1.0 / R_MAX_ACCE; //計算簡素化用 |
31 | -const float MyBunshinWateringLaserChip001::MAX_ACCE_RENGE = MAX_VELO_RENGE/R_MAX_ACCE; | |
31 | +const acce MyBunshinWateringLaserChip001::MAX_ACCE_RENGE = MAX_VELO_RENGE/R_MAX_ACCE; | |
32 | 32 | const velo MyBunshinWateringLaserChip001::MIN_VELO_ = MyBunshinWateringLaserChip001::INITIAL_VELO/10; // ÷10 は、最低移動する各軸のINITIAL_VELOの割合 |
33 | 33 | GgafDx::Model* MyBunshinWateringLaserChip001::pModel_ = nullptr; |
34 | 34 | int MyBunshinWateringLaserChip001::tex_no_ = 0; |
@@ -95,17 +95,11 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
95 | 95 | double power = active_frame <= 300 ? UTIL::SHOT_POWER[active_frame] : UTIL::SHOT_POWER[300]; |
96 | 96 | getStatus()->set(STAT_AttackPowerRate, power); |
97 | 97 | _power = power; |
98 | - | |
99 | 98 | GgafDx::GeoVehicle* const pGeoVehicle = getGeoVehicle(); |
100 | - | |
101 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life > 4413) { | |
102 | -// _TRACE_("なんでや1 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
103 | -// } | |
104 | - | |
105 | 99 | MyBunshin::AimInfo* pAimInfo = pAimInfo_; |
106 | 100 | |
107 | - if (active_frame >= 60*20) { | |
108 | - sayonara(); //保険のタイムアウト20秒 | |
101 | + if (active_frame >= 60*10) { | |
102 | + sayonara(); //保険のタイムアウト10秒 | |
109 | 103 | } else if (pAimInfo == nullptr || active_frame < 7) { |
110 | 104 | //なにもしない |
111 | 105 | } else { |
@@ -125,17 +119,17 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
125 | 119 | //●Leader が t1 へ Aim |
126 | 120 | if (pAimTarget->isActiveInTheTree() && active_frame < aim_time_out_t1) { |
127 | 121 | //pAimTarget が存命 |
128 | - int vx1 = pGeoVehicle->_velo_x; | |
129 | - int vy1 = pGeoVehicle->_velo_y; | |
130 | - int vz1 = pGeoVehicle->_velo_z; | |
122 | + int vx1 = pGeoVehicle->_velo_vc_x; | |
123 | + int vy1 = pGeoVehicle->_velo_vc_y; | |
124 | + int vz1 = pGeoVehicle->_velo_vc_z; | |
131 | 125 | |
132 | 126 | aimChip(pAimInfo->t1_x, |
133 | 127 | pAimInfo->t1_y, |
134 | 128 | pAimInfo->t1_z ); |
135 | 129 | |
136 | - int vx2 = pGeoVehicle->_velo_x; | |
137 | - int vy2 = pGeoVehicle->_velo_y; | |
138 | - int vz2 = pGeoVehicle->_velo_z; | |
130 | + int vx2 = pGeoVehicle->_velo_vc_x; | |
131 | + int vy2 = pGeoVehicle->_velo_vc_y; | |
132 | + int vz2 = pGeoVehicle->_velo_vc_z; | |
139 | 133 | |
140 | 134 | int sgn_vx = SGN(vx1 - vx2); |
141 | 135 | int sgn_vy = SGN(vy1 - vy2); |
@@ -154,6 +148,7 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
154 | 148 | if (inv_cnt_ > 10) { //10回も速度の正負が入れ替わったら終了 |
155 | 149 | pAimInfo_->spent_frames_to_t1 = active_frame; //Aim t1 終了 |
156 | 150 | } else { |
151 | + // t1 と衝突したら終了 | |
157 | 152 | static const coord renge = MyBunshinWateringLaserChip001::INITIAL_VELO; |
158 | 153 | static const ucoord renge2 = renge*2; |
159 | 154 | if ( (ucoord)(_x - pAimInfo->t1_x + renge) <= renge2) { |
@@ -173,7 +168,7 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
173 | 168 | //●Leader が t1 へ Aim し終わったあと |
174 | 169 | //t2を決める |
175 | 170 | static const Spacetime* pSpaceTime = pGOD->getSpacetime(); |
176 | - static const double zf_r = UTIL::getDistance( | |
171 | + static const double ZF_R = UTIL::getDistance( | |
177 | 172 | 0.0, 0.0, 0.0, |
178 | 173 | (double)(pSpaceTime->_x_bound_right), |
179 | 174 | (double)(pSpaceTime->_y_bound_top), |
@@ -187,15 +182,15 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
187 | 182 | } |
188 | 183 | } |
189 | 184 | if (pB) { |
190 | - pAimInfo->setT2(zf_r, pB->_x, pB->_y, pB->_z, _x, _y, _z); | |
185 | + pAimInfo->setT2(ZF_R, pB->_x, pB->_y, pB->_z, _x, _y, _z); | |
191 | 186 | } else { |
192 | - pAimInfo->setT2(zf_r, pOrg_->_x, pOrg_->_y, pOrg_->_z, _x, _y, _z); | |
187 | + pAimInfo->setT2(ZF_R, pOrg_->_x, pOrg_->_y, pOrg_->_z, _x, _y, _z); | |
193 | 188 | } |
194 | 189 | coord t2_d = UTIL::getDistance(_x, _y, _z, |
195 | 190 | pAimInfo->t2_x, |
196 | 191 | pAimInfo->t2_y, |
197 | 192 | pAimInfo->t2_z); |
198 | - pAimInfo->spent_frames_to_t2 = active_frame + (frame)(t2_d*MyBunshinWateringLaserChip001::INV_MAX_VELO_RENGE); //t2到達時間概算 | |
193 | + pAimInfo->spent_frames_to_t2 = active_frame + (frame)(t2_d/MyBunshinWateringLaserChip001::MAX_VELO_RENGE); //t2到達時間概算 | |
199 | 194 | aimChip(pAimInfo->t2_x, |
200 | 195 | pAimInfo->t2_y, |
201 | 196 | pAimInfo->t2_z ); |
@@ -206,9 +201,9 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
206 | 201 | pAimInfo->t2_y, |
207 | 202 | pAimInfo->t2_z ); |
208 | 203 | } else { |
209 | - aimChip(_x + pGeoVehicle->_velo_x*4+1, | |
210 | - _y + pGeoVehicle->_velo_y*4+1, | |
211 | - _z + pGeoVehicle->_velo_z*4+1 ); | |
204 | + aimChip(_x + pGeoVehicle->_velo_vc_x*4+1, | |
205 | + _y + pGeoVehicle->_velo_vc_y*4+1, | |
206 | + _z + pGeoVehicle->_velo_vc_z*4+1 ); | |
212 | 207 | } |
213 | 208 | } |
214 | 209 | } else { |
@@ -236,9 +231,9 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
236 | 231 | pAimLeaderChip->_y, |
237 | 232 | pAimLeaderChip->_z ); |
238 | 233 | } else { |
239 | - aimChip(pAimInfo->t1_x, | |
240 | - pAimInfo->t1_y, | |
241 | - pAimInfo->t1_z ); | |
234 | + aimChip(_x + pGeoVehicle->_velo_vc_x*4+1, | |
235 | + _y + pGeoVehicle->_velo_vc_y*4+1, | |
236 | + _z + pGeoVehicle->_velo_vc_z*4+1 ); | |
242 | 237 | } |
243 | 238 | } else if (active_frame <= pAimInfo->spent_frames_to_t1) { |
244 | 239 | //●Leader以外が t1 が定まってから t1 到達までの動き |
@@ -254,17 +249,23 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
254 | 249 | pAimLeaderChip->_y, |
255 | 250 | pAimLeaderChip->_z ); |
256 | 251 | } else { |
257 | - aimChip(_x + pGeoVehicle->_velo_x*4+1, | |
258 | - _y + pGeoVehicle->_velo_y*4+1, | |
259 | - _z + pGeoVehicle->_velo_z*4+1 ); | |
252 | + aimChip(_x + pGeoVehicle->_velo_vc_x*4+1, | |
253 | + _y + pGeoVehicle->_velo_vc_y*4+1, | |
254 | + _z + pGeoVehicle->_velo_vc_z*4+1 ); | |
260 | 255 | } |
261 | 256 | } else if (active_frame <= pAimInfo->spent_frames_to_t2) { |
262 | 257 | //●その後 Leader以外が t2 が定まって、t2に向かうまでの動き |
258 | + //aimChip(pAimInfo->t2_x, | |
259 | + // pAimInfo->t2_y, | |
260 | + // pAimInfo->t2_z ); | |
261 | + | |
262 | + //t2 ではなくて、あえて LeaderChip を優先で追いかける。そのほうがそれっぽい動きになる。 | |
263 | 263 | if (pAimLeaderChip) { |
264 | 264 | aimChip(pAimLeaderChip->_x, |
265 | 265 | pAimLeaderChip->_y, |
266 | 266 | pAimLeaderChip->_z ); |
267 | 267 | } else { |
268 | + // LeaderChip がいないなら、仕方ないので本来の t2 へ | |
268 | 269 | aimChip(pAimInfo->t2_x, |
269 | 270 | pAimInfo->t2_y, |
270 | 271 | pAimInfo->t2_z ); |
@@ -276,9 +277,9 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
276 | 277 | pAimLeaderChip->_y, |
277 | 278 | pAimLeaderChip->_z ); |
278 | 279 | } else { |
279 | - aimChip(_x + pGeoVehicle->_velo_x*4+1, | |
280 | - _y + pGeoVehicle->_velo_y*4+1, | |
281 | - _z + pGeoVehicle->_velo_z*4+1 ); | |
280 | + aimChip(_x + pGeoVehicle->_velo_vc_x*4+1, | |
281 | + _y + pGeoVehicle->_velo_vc_y*4+1, | |
282 | + _z + pGeoVehicle->_velo_vc_z*4+1 ); | |
282 | 283 | } |
283 | 284 | } else { |
284 | 285 | _TRACE_("【警告】ありえない"); |
@@ -289,23 +290,7 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
289 | 290 | } //if (pAimTarget) |
290 | 291 | |
291 | 292 | } |
292 | - | |
293 | - | |
294 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life > 4413) { | |
295 | -// _TRACE_("なんでや3 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
296 | -// } | |
297 | -// | |
298 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life == 4416) { | |
299 | -// _TRACE_("きたで3 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
300 | -// } | |
301 | - | |
302 | - | |
303 | 293 | pGeoVehicle->behave(); |
304 | - | |
305 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life > 4413) { | |
306 | -//// && pGeoVehicle->_velo_x == 0 && pGeoVehicle->_velo_y == 0 && pGeoVehicle->_velo_z == 0) { | |
307 | -// _TRACE_("なんでや4 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
308 | -// } | |
309 | 294 | WateringLaserChip::processBehavior(); |
310 | 295 | |
311 | 296 | tmp_x_ = _x; |
@@ -316,11 +301,6 @@ void MyBunshinWateringLaserChip001::processBehavior() { | ||
316 | 301 | void MyBunshinWateringLaserChip001::processSettlementBehavior() { |
317 | 302 | //分身はFKなので、絶対座標の確定が processSettlementBehavior() 以降となるため、ここで初期設定が必要 |
318 | 303 | GgafDx::GeoVehicle* const pGeoVehicle = getGeoVehicle(); |
319 | - | |
320 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life > 4413) { | |
321 | -// _TRACE_("なんでや5 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
322 | -// } | |
323 | - | |
324 | 304 | if (hasJustChangedToActive()) { |
325 | 305 | //チップの初期設定 |
326 | 306 | //ロックオン情報の引き継ぎ |
@@ -345,15 +325,9 @@ void MyBunshinWateringLaserChip001::processSettlementBehavior() { | ||
345 | 325 | pAimInfo_->pLeaderChip = this; |
346 | 326 | pAimInfo_->pTarget = nullptr; |
347 | 327 | } |
348 | - pGeoVehicle->forceVeloRange(MIN_VELO_, MAX_VELO_RENGE); | |
349 | 328 | } else { |
350 | 329 | //先端以外は前のを受け継ぐ |
351 | 330 | pAimInfo_ = pF->pAimInfo_; //受け継ぐ |
352 | - | |
353 | - pGeoVehicle->forceVeloRange(MIN_VELO_, MAX_VELO_RENGE); | |
354 | - | |
355 | -// velo v = MAX_VELO_RENGE - PX_C(1); //レーザーが弛まないように PX_C(1) 遅くした | |
356 | -// pGeoVehicle->forceVeloRange(MIN_VELO_, v); | |
357 | 331 | #ifdef MY_DEBUG |
358 | 332 | if (pAimInfo_ == nullptr) { |
359 | 333 | throwCriticalException("pAimInfo_ が引き継がれていません!"<<this<< |
@@ -415,13 +389,9 @@ throwCriticalException("pAimInfo_ | ||
415 | 389 | // pGeoVehicle->_velo_z, |
416 | 390 | // _rz, _ry ); |
417 | 391 | } |
418 | - | |
419 | -// if (strcmp(getName(), "Bunshin4's LaserChip(75)") == 0 && _frame_of_life > 4413) { | |
420 | -// _TRACE_("なんでや6 "<<pGeoVehicle->_velo_x<<","<<pGeoVehicle->_velo_y<<","<<pGeoVehicle->_velo_z); | |
421 | -// } | |
422 | - UTIL::convVectorToRzRy(pGeoVehicle->_velo_x, | |
423 | - pGeoVehicle->_velo_y, | |
424 | - pGeoVehicle->_velo_z, | |
392 | + UTIL::convVectorToRzRy(pGeoVehicle->_velo_vc_x, | |
393 | + pGeoVehicle->_velo_vc_y, | |
394 | + pGeoVehicle->_velo_vc_z, | |
425 | 395 | _rz, _ry ); |
426 | 396 | } |
427 | 397 | WateringLaserChip::processSettlementBehavior(); |
@@ -472,44 +442,24 @@ void MyBunshinWateringLaserChip001::aimChip(int tX, int tY, int tZ) { | ||
472 | 442 | #endif |
473 | 443 | |
474 | 444 | |
475 | - static const coord rv = 10.0; | |
445 | + static const coord rv = 10; // 5 | |
476 | 446 | GgafDx::GeoVehicle* pGeoVehicle = getGeoVehicle(); |
477 | 447 | //自→仮、自方向ベクトル(vM) |
478 | - coord vMx = pGeoVehicle->_velo_x; | |
479 | - coord vMy = pGeoVehicle->_velo_y; | |
480 | - coord vMz = pGeoVehicle->_velo_z; | |
448 | + coord vMx = pGeoVehicle->_velo_vc_x; | |
449 | + coord vMy = pGeoVehicle->_velo_vc_y; | |
450 | + coord vMz = pGeoVehicle->_velo_vc_z; | |
481 | 451 | //|vM| |
482 | -// double lvM = sqrt(vMx*vMx + vMy*vMy + vMz*vMz); | |
483 | -// coord lvM = UTIL::getDistanceFromOrigin(vMx, vMy, vMz); | |
484 | - | |
485 | 452 | coord lvM = pGeoVehicle->_velo; |
486 | - //|vM|があまりに小さい場合=速度が遅すぎる場合を考慮 | |
487 | -// if (lvM < MIN_VELO_) { //縮こまらないように | |
488 | -// if (ZEROd_EQ(lvM)) { | |
489 | -// //速度が殆ど0でもうどっち向いてるかわからんので、X軸方向に飛ばす | |
490 | -// pGeoVehicle->setVelo(MIN_VELO_, 0, 0); | |
491 | -// } else { | |
492 | -// //速度 MIN_VELO_ を保証する | |
493 | -// double r = (1.0*MIN_VELO_/lvM); | |
494 | -// pGeoVehicle->setVelo(vMx*r, vMy*r, vMz*r); | |
495 | -// } | |
496 | -// vMx = pGeoVehicle->_velo_x; | |
497 | -// vMy = pGeoVehicle->_velo_y; | |
498 | -// vMz = pGeoVehicle->_velo_z; | |
499 | -// lvM = MIN_VELO_; | |
500 | -// } | |
453 | + | |
501 | 454 | coord vVMx = vMx * rv; |
502 | 455 | coord vVMy = vMy * rv; |
503 | 456 | coord vVMz = vMz * rv; |
504 | 457 | coord lvVM = lvM * rv; |
505 | - | |
506 | - | |
507 | 458 | //自→的、方向ベクトル (vT) |
508 | 459 | coord vTx = tX - _x; |
509 | 460 | coord vTy = tY - _y; |
510 | 461 | coord vTz = tZ - _z; |
511 | 462 | //|vT| |
512 | -// double lvT = sqrt(vTx*vTx + vTy*vTy + vTz*vTz); | |
513 | 463 | coord lvT = UTIL::getDistanceFromOrigin(vTx, vTy, vTz); |
514 | 464 | //|仮的| を lvVM の長さに合わせて作成 |
515 | 465 | double rMT = (lvVM * 1.2 / lvT) ; |
@@ -519,20 +469,11 @@ void MyBunshinWateringLaserChip001::aimChip(int tX, int tY, int tZ) { | ||
519 | 469 | coord vVTy = vTy * rMT; |
520 | 470 | coord vVTz = vTz * rMT; |
521 | 471 | coord lvVT = lvT * rMT; |
522 | -// double cos_th = ((vMx*vTx + vMy*vTy + vMz*vTz) / (lvT * lvM)); //なす角 | |
523 | -// if (cos_th < 0.5) { | |
524 | -// cos_th = 0.5; | |
525 | -// } | |
526 | 472 | //vVP 仮自→仮的 の加速度設定 |
527 | 473 | //→vVP=( vVTx-vVMx, vVTy-vVMy, vVTz-vVMz ) |
528 | - const acce accX = (vVTx-vVMx) * RR_MAX_ACCE; // * cos_th; | |
529 | - const acce accY = (vVTy-vVMy) * RR_MAX_ACCE; // * cos_th; | |
530 | - const acce accZ = (vVTz-vVMz) * RR_MAX_ACCE; // * cos_th; | |
531 | -// double top_acce_mv = pGeoVehicle->_top_acce_x*1.05; //ちょっとずつなら拡張しちょいよみたいな | |
532 | -// if (MAX_VELO_RENGE < top_acce_mv && top_acce_mv < MAX_VELO_RENGE) { | |
533 | -// pGeoVehicle->forceAcceXYZRange(-top_acce_mv, top_acce_mv); | |
534 | -// } | |
535 | - pGeoVehicle->setAcce(accX, accY, accZ); | |
474 | + pGeoVehicle->setAcceByVc((vVTx-vVMx) * RR_MAX_ACCE, | |
475 | + (vVTy-vVMy) * RR_MAX_ACCE, | |
476 | + (vVTz-vVMz) * RR_MAX_ACCE); | |
536 | 477 | } |
537 | 478 | |
538 | 479 |
@@ -553,8 +494,7 @@ void MyBunshinWateringLaserChip001::onHit(const GgafCore::Actor* prm_pOtherActor | ||
553 | 494 | if (stamina <= 0) { |
554 | 495 | //一撃でチップ消滅の攻撃力 |
555 | 496 | getStatus()->set(STAT_Stamina, default_stamina_); |
556 | -//TODO:ここで sayonara() せずに、しばらく理想のホーミングレーザー軌跡を研究する! | |
557 | - //sayonara(); | |
497 | + sayonara(); | |
558 | 498 | } else { |
559 | 499 | //耐えれるならば、通貫し、スタミナ回復(攻撃力100の雑魚ならば通貫) |
560 | 500 | getStatus()->set(STAT_Stamina, default_stamina_); |
@@ -42,8 +42,8 @@ public: | ||
42 | 42 | static const velo MAX_VELO_RENGE; |
43 | 43 | /** [r]計算用 */ |
44 | 44 | static const double INV_MAX_VELO_RENGE; |
45 | - /** 加速度範囲(-MAX_ACCE_RENGE, MAX_ACCE_RENGE) */ | |
46 | - static const float MAX_ACCE_RENGE; | |
45 | + /** 加速度範囲(0, MAX_ACCE_RENGE) */ | |
46 | + static const acce MAX_ACCE_RENGE; | |
47 | 47 | |
48 | 48 | static const velo INITIAL_VELO; |
49 | 49 |
@@ -822,7 +822,7 @@ | ||
822 | 822 | </extensions> |
823 | 823 | </storageModule> |
824 | 824 | <storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
825 | - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.VCErrorParser" id="cdt.managedbuild.config.gnu.cygwin.exe.debug.2121379341.247885131.632570595.1831413570" name="DebugCdt_x64" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.cygwin.exe.debug" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="pwd"> | |
825 | + <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" errorParsers="org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.VCErrorParser" id="cdt.managedbuild.config.gnu.cygwin.exe.debug.2121379341.247885131.632570595.1831413570" name="DebugCdt_x64" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=" parent="cdt.managedbuild.config.gnu.cygwin.exe.debug" postannouncebuildStep="" postbuildStep="" preannouncebuildStep="" prebuildStep="pwd"> | |
826 | 826 | <folderInfo id="cdt.managedbuild.config.gnu.cygwin.exe.debug.2121379341.247885131.632570595.1831413570." name="/" resourcePath=""> |
827 | 827 | <toolChain errorParsers="" id="cdt.managedbuild.toolchain.gnu.mingw.base.1846276466" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base"> |
828 | 828 | <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE;org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.GNU_ELF" id="cdt.managedbuild.target.gnu.platform.mingw.base.1860135973" name="デバッグ・プラットフォーム" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/> |