Violet Vreath is Shooter Game for Windows XP+(個人制作シューティングゲーム)
Revision | 8f05e812e07fb7db2064b6f55559e86866079b41 (tree) |
---|---|
Time | 2019-03-19 22:11:12 |
Author | gecchi <gecchi@XPS8...> |
Commiter | gecchi |
平行曲線の奇跡
@@ -665,8 +665,8 @@ void Kuroko::forceRzMvAngVeloRange(angvelo prm_angvelo_rz_mv01, | ||
665 | 665 | } |
666 | 666 | |
667 | 667 | void Kuroko::setStopTargetRzMvAng(angle prm_target_rz_mv, |
668 | - int prm_allow_way, | |
669 | - angvelo prm_allow_angvelo) { | |
668 | + int prm_allow_way, | |
669 | + angvelo prm_allow_angvelo) { | |
670 | 670 | _is_targeting_rz_mv = true; |
671 | 671 | _rz_mv_targeting_stop_flg = true; |
672 | 672 | _target_rz_mv = UTIL::simplifyAng(prm_target_rz_mv); |
@@ -1071,8 +1071,8 @@ void Kuroko::turnRzRyFaceAngTo(angle prm_rz_target, angle prm_ry_target, | ||
1071 | 1071 | } |
1072 | 1072 | |
1073 | 1073 | void Kuroko::turnFaceAngTwd(coord prm_tx, coord prm_ty, coord prm_tz, |
1074 | - angvelo prm_angvelo, angacce prm_angacce, | |
1075 | - int prm_way, bool prm_optimize_ang) { | |
1074 | + angvelo prm_angvelo, angacce prm_angacce, | |
1075 | + int prm_way, bool prm_optimize_ang) { | |
1076 | 1076 | coord vx = prm_tx - _pActor->_x; |
1077 | 1077 | coord vy = prm_ty - _pActor->_y; |
1078 | 1078 | coord vz = prm_tz - _pActor->_z; |
@@ -1092,8 +1092,8 @@ void Kuroko::turnFaceAngTwd(coord prm_tx, coord prm_ty, coord prm_tz, | ||
1092 | 1092 | |
1093 | 1093 | |
1094 | 1094 | void Kuroko::turnFaceAng(axis prm_axis, |
1095 | - angle prm_distance, | |
1096 | - angvelo prm_angvelo, angacce prm_angacce) { | |
1095 | + angle prm_distance, | |
1096 | + angvelo prm_angvelo, angacce prm_angacce) { | |
1097 | 1097 | int s = SGN(prm_distance); |
1098 | 1098 | setFaceAngVelo(prm_axis, ABS(prm_angvelo)*s); |
1099 | 1099 | setFaceAngAcce(prm_axis, ABS(prm_angacce)*s); |
@@ -1104,8 +1104,8 @@ void Kuroko::turnFaceAng(axis prm_axis, | ||
1104 | 1104 | |
1105 | 1105 | |
1106 | 1106 | void Kuroko::turnRzFaceAngTo(angle prm_rz_target, |
1107 | - angvelo prm_angvelo, angacce prm_angacce, | |
1108 | - int prm_way) { | |
1107 | + angvelo prm_angvelo, angacce prm_angacce, | |
1108 | + int prm_way) { | |
1109 | 1109 | if (getFaceAngDistance(AXIS_Z, prm_rz_target, prm_way) > 0) { |
1110 | 1110 | setFaceAngVelo(AXIS_Z, prm_angvelo); |
1111 | 1111 | setFaceAngAcce(AXIS_Z, prm_angacce); |
@@ -1134,8 +1134,8 @@ void Kuroko::turnRyFaceAngTo(angle prm_ry_target, | ||
1134 | 1134 | } |
1135 | 1135 | |
1136 | 1136 | void Kuroko::rollFaceAngTo(angle prm_rx_target, |
1137 | - angvelo prm_angvelo, angacce prm_angacce, | |
1138 | - int prm_way) { | |
1137 | + angvelo prm_angvelo, angacce prm_angacce, | |
1138 | + int prm_way) { | |
1139 | 1139 | if (getFaceAngDistance(AXIS_X, prm_rx_target, prm_way) > 0) { |
1140 | 1140 | setFaceAngVelo(AXIS_X, prm_angvelo); |
1141 | 1141 | setFaceAngAcce(AXIS_X, prm_angacce); |
@@ -1147,8 +1147,8 @@ void Kuroko::rollFaceAngTo(angle prm_rx_target, | ||
1147 | 1147 | } |
1148 | 1148 | |
1149 | 1149 | void Kuroko::turnRzRyMvAngTo(angle prm_rz_target, angle prm_ry_target, |
1150 | - angvelo prm_angvelo, angacce prm_angacce, | |
1151 | - int prm_way, bool prm_optimize_ang) { | |
1150 | + angvelo prm_angvelo, angacce prm_angacce, | |
1151 | + int prm_way, bool prm_optimize_ang) { | |
1152 | 1152 | angle out_d_rz; |
1153 | 1153 | angle out_d_ry; |
1154 | 1154 | if (prm_optimize_ang) { |
@@ -1236,8 +1236,8 @@ void Kuroko::turnRzRyMvAngTo(angle prm_rz_target, angle prm_ry_target, | ||
1236 | 1236 | } |
1237 | 1237 | |
1238 | 1238 | void Kuroko::turnMvAngTwd(coord prm_tx, coord prm_ty, coord prm_tz, |
1239 | - angvelo prm_angvelo, angacce prm_angacce, | |
1240 | - int prm_way, bool prm_optimize_ang) { | |
1239 | + angvelo prm_angvelo, angacce prm_angacce, | |
1240 | + int prm_way, bool prm_optimize_ang) { | |
1241 | 1241 | coord vx = prm_tx - _pActor->_x; |
1242 | 1242 | coord vy = prm_ty - _pActor->_y; |
1243 | 1243 | coord vz = prm_tz - _pActor->_z; |
@@ -1256,7 +1256,7 @@ void Kuroko::turnMvAngTwd(coord prm_tx, coord prm_ty, coord prm_tz, | ||
1256 | 1256 | } |
1257 | 1257 | |
1258 | 1258 | void Kuroko::turnRzMvAng(angle prm_rz_distance, |
1259 | - angvelo prm_angvelo, angacce prm_angacce) { | |
1259 | + angvelo prm_angvelo, angacce prm_angacce) { | |
1260 | 1260 | int s = SGN(prm_rz_distance); |
1261 | 1261 | setRzMvAngVelo(ABS(prm_angvelo) * s); |
1262 | 1262 | setRzMvAngAcce(ABS(prm_angacce) * s); |
@@ -1264,7 +1264,7 @@ void Kuroko::turnRzMvAng(angle prm_rz_distance, | ||
1264 | 1264 | } |
1265 | 1265 | |
1266 | 1266 | void Kuroko::turnRyMvAng(angle prm_ry_distance, |
1267 | - angvelo prm_angvelo, angacce prm_angacce) { | |
1267 | + angvelo prm_angvelo, angacce prm_angacce) { | |
1268 | 1268 | int s = SGN(prm_ry_distance); |
1269 | 1269 | setRyMvAngVelo(ABS(prm_angvelo) * s); |
1270 | 1270 | setRyMvAngAcce(ABS(prm_angacce) * s); |
@@ -1272,8 +1272,8 @@ void Kuroko::turnRyMvAng(angle prm_ry_distance, | ||
1272 | 1272 | } |
1273 | 1273 | |
1274 | 1274 | void Kuroko::turnRzMvAngTo(angle prm_rz_target, |
1275 | - angvelo prm_angvelo, angacce prm_angacce, | |
1276 | - int prm_way) { | |
1275 | + angvelo prm_angvelo, angacce prm_angacce, | |
1276 | + int prm_way) { | |
1277 | 1277 | if (getRzMvAngDistance(prm_rz_target, prm_way) > 0) { |
1278 | 1278 | setRzMvAngVelo(prm_angvelo); |
1279 | 1279 | setRzMvAngAcce(prm_angacce); |
@@ -1285,8 +1285,8 @@ void Kuroko::turnRzMvAngTo(angle prm_rz_target, | ||
1285 | 1285 | } |
1286 | 1286 | |
1287 | 1287 | void Kuroko::turnRyMvAngTo(angle prm_ry_target, |
1288 | - angvelo prm_angvelo, angacce prm_angacce, | |
1289 | - int prm_way) { | |
1288 | + angvelo prm_angvelo, angacce prm_angacce, | |
1289 | + int prm_way) { | |
1290 | 1290 | if (getRyMvAngDistance(prm_ry_target, prm_way) > 0) { |
1291 | 1291 | setRyMvAngVelo(prm_angvelo); |
1292 | 1292 | setRyMvAngAcce(prm_angacce); |
@@ -144,16 +144,16 @@ void KurokoMvAngAssistant::turnRyByVd( | ||
144 | 144 | |
145 | 145 | |
146 | 146 | void KurokoMvAngAssistant::turnRzByDtTo(angle prm_rz_target, int prm_way, int prm_target_frames, |
147 | - float prm_p1, float prm_p2, angvelo prm_end_angvelo, | |
148 | - bool prm_zero_acc_end_flg) { | |
147 | + float prm_p1, float prm_p2, angvelo prm_end_angvelo, | |
148 | + bool prm_zero_acc_end_flg) { | |
149 | 149 | angle distance = _pMaster->getRzMvAngDistance(prm_rz_target, prm_way); |
150 | 150 | turnRzByDt(distance, prm_target_frames, |
151 | - prm_p1, prm_p2, prm_end_angvelo, | |
152 | - prm_zero_acc_end_flg); | |
151 | + prm_p1, prm_p2, prm_end_angvelo, | |
152 | + prm_zero_acc_end_flg); | |
153 | 153 | } |
154 | 154 | void KurokoMvAngAssistant::turnRyByDtTo(angle prm_ry_target, int prm_way, int prm_target_frames, |
155 | - float prm_p1, float prm_p2, angvelo prm_end_angvelo, | |
156 | - bool prm_zero_acc_end_flg) { | |
155 | + float prm_p1, float prm_p2, angvelo prm_end_angvelo, | |
156 | + bool prm_zero_acc_end_flg) { | |
157 | 157 | angle distance = _pMaster->getRyMvAngDistance(prm_ry_target, prm_way); |
158 | 158 | turnRyByDt(distance, prm_target_frames, |
159 | 159 | prm_p1, prm_p2, prm_end_angvelo, |
@@ -177,11 +177,11 @@ void KurokoMvAngAssistant::turnRzRyByDtTo( | ||
177 | 177 | } |
178 | 178 | |
179 | 179 | turnRzByDt(out_rz_distance, prm_target_frames, |
180 | - prm_p1, prm_p2, prm_end_angvelo, | |
181 | - prm_zero_acc_end_flg); | |
180 | + prm_p1, prm_p2, prm_end_angvelo, | |
181 | + prm_zero_acc_end_flg); | |
182 | 182 | turnRyByDt(out_ry_distance, prm_target_frames, |
183 | - prm_p1, prm_p2, prm_end_angvelo, | |
184 | - prm_zero_acc_end_flg); | |
183 | + prm_p1, prm_p2, prm_end_angvelo, | |
184 | + prm_zero_acc_end_flg); | |
185 | 185 | } |
186 | 186 | |
187 | 187 | void KurokoMvAngAssistant::turnByDtTwd( |
@@ -18,7 +18,6 @@ namespace GgafLib { | ||
18 | 18 | */ |
19 | 19 | class FixedVelocitySplineKurokoLeader : public SplineLeader { |
20 | 20 | |
21 | - | |
22 | 21 | public: |
23 | 22 | GgafDx::Kuroko* _pKuroko_target; |
24 | 23 | /** [r]スプライン情報セット(splファイルの情報に相当) */ |
@@ -70,6 +70,8 @@ public: | ||
70 | 70 | float _sinRy_begin; |
71 | 71 | float _cosRy_begin; |
72 | 72 | |
73 | + bool _turn_smooth; | |
74 | + | |
73 | 75 | public: |
74 | 76 | /** |
75 | 77 | * コンストラクタ . |
@@ -2,6 +2,7 @@ | ||
2 | 2 | |
3 | 3 | #include "jp/ggaf/dx/exception/CriticalException.h" |
4 | 4 | #include "jp/ggaf/dx/actor/supporter/Kuroko.h" |
5 | +#include "jp/ggaf/dx/actor/supporter/KurokoMvAngAssistant.h" | |
5 | 6 | #include "jp/ggaf/lib/util/StgUtil.h" |
6 | 7 | #include "jp/ggaf/lib/util/spline/SplineSource.h" |
7 | 8 | #include "jp/ggaf/lib/util/spline/FixedVelocitySplineManufacture.h" |
@@ -56,17 +57,25 @@ again: | ||
56 | 57 | _float_frame_of_next = (1.0*_distance_to_begin / _pFixedVeloSplManuf->_velo_mvUnit) + |
57 | 58 | _pFixedVeloSplManuf->_paFrame_need_at[_point_index]; |
58 | 59 | } |
60 | + if (_leadning_float_frames >= _float_frame_of_next) { | |
61 | + //_float_frame_of_nextを次に進めても足りない場合、もう一つ_point_indexを進める | |
62 | + goto again; | |
63 | + } | |
64 | + coord x, y, z; | |
65 | + getPointCoord(_point_index, x, y, z); | |
66 | + if (_turn_smooth) { | |
67 | + pKuroko_target->asstMvAng()->turnByVdTwd( | |
68 | + _pFixedVeloSplManuf->_angvelo_rzry_mv, | |
69 | + x, y, z, _pFixedVeloSplManuf->_turn_way, _pFixedVeloSplManuf->_turn_optimize, | |
70 | + 0.3, 0.7, 0, | |
71 | + true); | |
72 | + } else { | |
73 | + pKuroko_target->turnMvAngTwd(x, y, z, | |
74 | + _pFixedVeloSplManuf->_angvelo_rzry_mv, 0, | |
75 | + _pFixedVeloSplManuf->_turn_way, | |
76 | + _pFixedVeloSplManuf->_turn_optimize); | |
77 | + } | |
59 | 78 | } |
60 | - if (_leadning_float_frames >= _float_frame_of_next) { | |
61 | - //_float_frame_of_nextを次に進めても足りない場合、もう一つ_point_indexを進める | |
62 | - goto again; | |
63 | - } | |
64 | - coord x, y, z; | |
65 | - getPointCoord(_point_index, x, y, z); | |
66 | - pKuroko_target->turnMvAngTwd(x, y, z, | |
67 | - _pFixedVeloSplManuf->_angvelo_rzry_mv, 0, | |
68 | - _pFixedVeloSplManuf->_turn_way, | |
69 | - _pFixedVeloSplManuf->_turn_optimize); | |
70 | 79 | //キャラの速度が1000ならば、_leadning_float_frames ++; |
71 | 80 | //キャラの速度が2000ならば _leadning_float_frames += 2.0; |
72 | 81 | //キャラの速度が500ならば、 _leadning_float_frames += 0.5 |
@@ -42,6 +42,7 @@ SplineLeader::SplineLeader(SplineManufacture* prm_pManufacture, GgafDx::Geometri | ||
42 | 42 | _is_fix_pos = false; |
43 | 43 | _is_force_start_ang = false; |
44 | 44 | // _is_loop_ang_by_face = true; |
45 | + _turn_smooth = false; | |
45 | 46 | } |
46 | 47 | |
47 | 48 | void SplineLeader::getPointCoord(int prm_point_index, coord& out_x, coord& out_y, coord& out_z) { |
@@ -1,12 +1,12 @@ | ||
1 | 1 | SPLINE=Hilbert4_STEP.dat |
2 | -MAG_X=2500000 | |
3 | -MAG_Y=2500000 | |
4 | -MAG_Z=2500000 | |
5 | -CLASS=SteppedCoordSpline | |
2 | +MAG_X=1000000 | |
3 | +MAG_Y=1000000 | |
4 | +MAG_Z=1000000 | |
5 | +CLASS=FixedVelocitySpline | |
6 | 6 | #SPENT_FRAME=7200 |
7 | -#ANGLE_VELOCITY=10000 | |
8 | -#TURN_WAY=TURN_CLOSE_TO | |
9 | -#TURN_OPTIMIZE=false | |
7 | +ANGLE_VELOCITY=100000 | |
8 | +TURN_WAY=TURN_CLOSE_TO | |
9 | +TURN_OPTIMIZE=false | |
10 | 10 | |
11 | 11 | #SteppedCoordSpline |
12 | 12 | #FixedVelocitySpline |
@@ -1,10 +1,10 @@ | ||
1 | 1 | SPLINE=ParallelCurve.dat |
2 | -MAG_X=800000 | |
3 | -MAG_Y=800000 | |
4 | -MAG_Z=800000 | |
2 | +MAG_X=1000 | |
3 | +MAG_Y=1000 | |
4 | +MAG_Z=1000 | |
5 | 5 | CLASS=FixedVelocitySpline |
6 | 6 | #SPENT_FRAME=7200 |
7 | -ANGLE_VELOCITY=1000 | |
7 | +ANGLE_VELOCITY=2000 | |
8 | 8 | TURN_WAY=TURN_CLOSE_TO |
9 | 9 | TURN_OPTIMIZE=false |
10 | 10 |
@@ -7,6 +7,7 @@ | ||
7 | 7 | #include "jp/ggaf/lib/util/spline/SplineLeader.h" |
8 | 8 | #include "jp/ggaf/lib/manager/SplineManufactureConnection.h" |
9 | 9 | #include "jp/ggaf/lib/util/spline/SplineManufacture.h" |
10 | +#include "jp/ggaf/dx/util/Input.h" | |
10 | 11 | |
11 | 12 | using namespace GgafLib; |
12 | 13 | using namespace Mogera; |
@@ -19,14 +20,15 @@ enum { | ||
19 | 20 | |
20 | 21 | EnemyIdaBase::EnemyIdaBase(const char* prm_name) : |
21 | 22 | DefaultMeshSetActor(prm_name, "Ida") { |
22 | - pConn_pSplManuf_ = connectToSplineManufactureManager("ParallelCurve"); | |
23 | +// pConn_pSplManuf_ = connectToSplineManufactureManager("ParallelCurve"); | |
24 | + pConn_pSplManuf_ = connectToSplineManufactureManager("FormationZako001_STEP"); | |
23 | 25 | pKurokoLeader_ = pConn_pSplManuf_->peek()->createKurokoLeader(getKuroko()); |
26 | + pKurokoLeader_->_turn_smooth = true; | |
24 | 27 | int n = 4; |
25 | 28 | coord D = PX_C(20); |
26 | 29 | for (int i = 0; i < n; i++) { |
27 | 30 | EnemyIda* p1 = NEW EnemyIda("ida"); |
28 | 31 | appendGroupChildAsFk(p1, 0, D*(i + 1), 0, 0, 0, 0); |
29 | - | |
30 | 32 | EnemyIda* p2 = NEW EnemyIda("ida"); |
31 | 33 | appendGroupChildAsFk(p2, 0, -D*(i + 1), 0, 0, 0, 0); |
32 | 34 | } |
@@ -38,7 +40,7 @@ void EnemyIdaBase::initialize() { | ||
38 | 40 | } |
39 | 41 | |
40 | 42 | void EnemyIdaBase::onActive() { |
41 | - setPosition(0, 0, 0); | |
43 | + setPosition(PX_C(-300), PX_C(-200), 0); | |
42 | 44 | getProgress()->reset(PROG_INIT); |
43 | 45 | } |
44 | 46 |
@@ -47,13 +49,15 @@ void EnemyIdaBase::processBehavior() { | ||
47 | 49 | GgafCore::Progress* const pProg = getProgress(); |
48 | 50 | switch (pProg->get()) { |
49 | 51 | case PROG_INIT: { |
50 | - pProg->changeNext(); | |
52 | + if (GgafDx::Input::isPushedDownKey(DIK_RETURN)) { | |
53 | + pProg->changeNext(); | |
54 | + } | |
51 | 55 | break; |
52 | 56 | } |
53 | 57 | case PROG_MOVE: { |
54 | 58 | if (pProg->hasJustChanged()) { |
55 | 59 | pKurokoLeader_->start(RELATIVE_COORD); |
56 | - pKuroko->setMvVelo(PX_C(1)); | |
60 | + pKuroko->setMvVelo(PX_C(2)); | |
57 | 61 | } |
58 | 62 | pKurokoLeader_->behave(); |
59 | 63 |
@@ -72,10 +76,10 @@ void EnemyIdaBase::processBehavior() { | ||
72 | 76 | void EnemyIdaBase::processJudgement() { |
73 | 77 | } |
74 | 78 | |
79 | + | |
75 | 80 | void EnemyIdaBase::onInactive() { |
76 | 81 | } |
77 | 82 | |
78 | 83 | EnemyIdaBase::~EnemyIdaBase() { |
79 | 84 | } |
80 | 85 | |
81 | - |
@@ -1 +1 @@ | ||
1 | -#define VERSION "VER 0.30.6604" | |
1 | +#define VERSION "VER 0.30.6607" |
@@ -21,6 +21,7 @@ | ||
21 | 21 | <br> |
22 | 22 | <textarea id="mogera"></textarea> |
23 | 23 | <div style="font-size:10px;text-align:center;"></div> |
24 | -<script type="text/javascript" src="kiseki.js"></script> | |
24 | +<script type="text/javascript" src="./kiseki.js"></script> | |
25 | 25 | </body> |
26 | 26 | </html> |
27 | + |
@@ -25,7 +25,7 @@ function msOpInit()// 初期設定 | ||
25 | 25 | document.onmousedown = function(){ mouse_down=true }; |
26 | 26 | document.onmouseup = function(){ |
27 | 27 | mouse_down=false; |
28 | - out_put "-------------------\n" += out_put; | |
28 | + out_put = "-------------------\n" + out_put; | |
29 | 29 | var mogera = document.getElementById("mogera"); |
30 | 30 | mogera.value=out_put; |
31 | 31 | mogera.select(); |
@@ -49,7 +49,7 @@ function msOpMove(e)// マウスが動くとここが実行されます | ||
49 | 49 | my=document.body.scrollTop+event.clientY; |
50 | 50 | msWx=window.document.body.clientWidth+document.body.scrollLeft; |
51 | 51 | msWy=window.document.body.clientHeight+document.body.scrollTop; |
52 | - out_put += mx+","+my+"\n"; | |
52 | + out_put += mx+" "+my+"\n"; | |
53 | 53 | msOMx[msOw]=mx;// マウスの座標を履歴に書き込み |
54 | 54 | msOMy[msOw]=my; |
55 | 55 | msOw++;// 書き込む位置の設定 |