• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision118 (tree)
Time2015-12-31 18:00:34
Authorxops-mikan

Log Message

手榴弾の物理計算を調整、手榴弾の爆風描画と被弾時の出血描画を改良

Change Summary

Incremental Difference

--- trunk/object.h (revision 117)
+++ trunk/object.h (revision 118)
@@ -75,7 +75,7 @@
7575 #define BULLET_SPEEDSCALE 3 //!< 弾速の倍率
7676 #define BULLET_DESTROYFRAME 40 //!< 弾の消滅フレーム数
7777 #define GRENADE_DESTROYFRAME 100 //!< 手榴弾の爆発フレーム数
78-#define GRENADE_BOUND_ACCELERATION ((0.63662f * 0.4f - 0.7f) * -1) //!< 手榴弾の反射減衰率
78+#define GRENADE_BOUND_ACCELERATION 0.565f //!< 手榴弾の反射減衰率
7979
8080 #ifndef H_LAYERLEVEL
8181 #define H_LAYERLEVEL 2 //!< Select include file.
@@ -323,6 +323,7 @@
323323 float move_z; //!< Z軸移動量
324324 float rotation_texture; //!< 回転角度
325325 float alpha; //!< 透明度
326+ float set_alpha; //!< スタート時の透明度
326327 int cnt; //!< カウント
327328 int setcnt; //!< 設定されたカウント
328329
@@ -358,10 +359,11 @@
358359 EFFECT_NORMAL = 0x00, //!< ノーマル
359360 EFFECT_DISAPPEAR = 0x01, //!< 消す
360361 EFFECT_DISAPPEARHALF = 0x02, //!< 半分の時間で消す
361- EFFECT_MAGNIFY = 0x04, //!< 拡大
362- EFFECT_ROTATION = 0x08, //!< 回転
363- EFFECT_FALL = 0x10, //!< 落下
364- EFFECT_NOBILLBOARD = 0x20 //!< ビルボード化しない
362+ EFFECT_TRANSLUCENT = 0x04, //!< 半透明
363+ EFFECT_MAGNIFY = 0x08, //!< 拡大
364+ EFFECT_ROTATION = 0x10, //!< 回転
365+ EFFECT_FALL = 0x20, //!< 落下
366+ EFFECT_NOBILLBOARD = 0x40 //!< ビルボード化しない
365367 };
366368
367369 #endif
\ No newline at end of file
--- trunk/object.cpp (revision 117)
+++ trunk/object.cpp (revision 118)
@@ -2558,8 +2558,15 @@
25582558 setcnt = count;
25592559 id_texture = texture;
25602560 type = settype;
2561- alpha = 1.0f;
25622561
2562+ if( type & EFFECT_TRANSLUCENT ){
2563+ set_alpha = 0.5f;
2564+ }
2565+ else{
2566+ set_alpha = 1.0f;
2567+ }
2568+ alpha = set_alpha;
2569+
25632570 if( init == true ){
25642571 rotation_x = 0.0f;
25652572 rotation_y = 0.0f;
@@ -2621,11 +2628,11 @@
26212628
26222629 //特殊処理を実行
26232630 if( type & EFFECT_DISAPPEAR ){ //消す
2624- alpha -= 1.0f/setcnt;
2631+ alpha -= set_alpha/setcnt;
26252632 }
26262633 if( type & EFFECT_DISAPPEARHALF ){ //半分の時間で消す
26272634 if( setcnt/2 > cnt ){
2628- alpha -= 1.0f/(setcnt/2);
2635+ alpha -= set_alpha/(setcnt/2);
26292636 }
26302637 }
26312638 if( type & EFFECT_MAGNIFY ){ //拡大
--- trunk/objectmanager.h (revision 117)
+++ trunk/objectmanager.h (revision 118)
@@ -103,7 +103,7 @@
103103 int AddHumanIndex(pointdata data, pointdata infodata);
104104 int AddWeaponIndex(pointdata data);
105105 int AddSmallObjectIndex(pointdata data);
106- void SetHumanBlood(float x, float y, float z);
106+ void SetHumanBlood(float x, float y, float z, int damage);
107107 bool CollideHuman(human *in_humanA, human *in_humanB);
108108 bool CollideBullet(bullet *in_bullet);
109109 void HitBulletMap(float x, float y, float z);
--- trunk/objectmanager.cpp (revision 117)
+++ trunk/objectmanager.cpp (revision 118)
@@ -539,12 +539,14 @@
539539 //! @param x X座標
540540 //! @param y Y座標
541541 //! @param z Z座標
542-void ObjectManager::SetHumanBlood(float x, float y, float z)
542+//! @param damage ダメージ
543+void ObjectManager::SetHumanBlood(float x, float y, float z, int damage)
543544 {
544545 if( GameConfig.GetBloodFlag() == true ){
545- for(int i=0; i<2; i++){
546+ AddEffect(x, y, z, 0.0f, 0.0f, 0.0f, 10.0f, DegreeToRadian(10)*GetRand(18), (int)(GAMEFPS * 0.4f), Resource->GetEffectBloodTexture(), EFFECT_DISAPPEAR | EFFECT_MAGNIFY | EFFECT_TRANSLUCENT);
547+ for(int i=0; i<(damage/10); i++){
546548 float rx = DegreeToRadian(10)*GetRand(36);
547- AddEffect(x + cos(rx)*1.0f, y + (float)(GetRand(20)-10)/10, z + sin(rx)*1.0f, cos(rx)*0.5f, 0.5f, sin(rx)*0.5f, 10.0f, DegreeToRadian(10)*GetRand(18), (int)(GAMEFPS * 0.5f), Resource->GetEffectBloodTexture(), EFFECT_FALL);
549+ AddEffect(x + cos(rx)*1.0f, y + (float)(GetRand(20)-10)/10, z + sin(rx)*1.0f, cos(rx)*0.5f, GetRand(5)*0.1f + 0.5f, sin(rx)*0.5f, 5.0f, DegreeToRadian(10)*GetRand(18), (int)(GAMEFPS * 0.5f), Resource->GetEffectBloodTexture(), EFFECT_FALL | EFFECT_TRANSLUCENT);
548550 }
549551 }
550552 }
@@ -854,6 +856,8 @@
854856 //! @param Shothuman_id 発射した人の番号
855857 void ObjectManager::HitBulletHuman(int HitHuman_id, int Hit_id, float x, float y, float z, float brx, int attacks, int Shothuman_id)
856858 {
859+ int damage = 0;
860+
857861 //使用されていないか、死亡していれば処理しない。
858862 if( HumanIndex[HitHuman_id].GetEnableFlag() == false ){ return; }
859863 if( HumanIndex[HitHuman_id].GetHP() <= 0 ){ return; }
@@ -865,7 +869,10 @@
865869 HumanIndex[HitHuman_id].AddPosOrder(brx, 0.0f, 1.0f);
866870
867871 //エフェクト(血)を表示
868- SetHumanBlood(x, y, z);
872+ if( Hit_id == 0 ){ damage = (int)((float)attacks * HUMAN_DAMAGE_HEAD); }
873+ if( Hit_id == 1 ){ damage = (int)((float)attacks * HUMAN_DAMAGE_UP); }
874+ if( Hit_id == 2 ){ damage = (int)((float)attacks * HUMAN_DAMAGE_LEG); }
875+ SetHumanBlood(x, y, z, damage);
869876
870877 //効果音を再生
871878 GameSound->HitHuman(x, y, z);
@@ -982,7 +989,7 @@
982989 }
983990
984991 //エフェクト(血)を表示
985- SetHumanBlood(hx, hy+15.0f, hz);
992+ SetHumanBlood(hx, hy+15.0f, hz, total_damage);
986993
987994 //人と手榴弾の距離を算出
988995 x = gx - hx;
@@ -1048,10 +1055,10 @@
10481055
10491056 //エフェクト(煙)の表示
10501057 float rnd = DegreeToRadian(10)*GetRand(18);
1051- AddEffect(gx+1.0f, gy+1.0f, gz+1.0f, 0.0f, 0.05f, 0.0f, 10.0f, rnd, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_MAGNIFY | EFFECT_ROTATION);
1052- AddEffect(gx-1.0f, gy-1.0f, gz-1.0f, 0.0f, 0.05f, 0.0f, 10.0f, rnd*-1, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_MAGNIFY | EFFECT_ROTATION);
1053- AddEffect(gx-1.0f, gy-1.0f, gz+1.0f, 0.0f, 0.05f, 0.0f, 10.0f, rnd, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_MAGNIFY | EFFECT_ROTATION);
1054- AddEffect(gx+1.0f, gy+1.0f, gz-1.0f, 0.0f, 0.05f, 0.0f, 10.0f, rnd*-1, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_MAGNIFY | EFFECT_ROTATION);
1058+ AddEffect(gx+1.0f, gy+1.0f, gz+1.0f, 0.1f, 0.2f, 0.1f, 50.0f, rnd, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_ROTATION | EFFECT_TRANSLUCENT);
1059+ AddEffect(gx-1.0f, gy-1.0f, gz-1.0f, -0.1f, 0.2, -0.1f, 50.0f, rnd*-1, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_ROTATION | EFFECT_TRANSLUCENT);
1060+ AddEffect(gx-1.0f, gy-1.0f, gz+1.0f, -0.1f, 0.2f, 0.1f, 50.0f, rnd, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_ROTATION | EFFECT_TRANSLUCENT);
1061+ AddEffect(gx+1.0f, gy+1.0f, gz-1.0f, 0.1f, 0.2f, -0.1f, 50.0f, rnd*-1, (int)GAMEFPS * 3, Resource->GetEffectSmokeTexture(), EFFECT_DISAPPEAR | EFFECT_ROTATION | EFFECT_TRANSLUCENT);
10551062
10561063 //効果音を再生
10571064 GameSound->GrenadeExplosion(gx, gy, gz);
@@ -2021,7 +2028,7 @@
20212028 EnemyHuman->HitZombieAttack();
20222029
20232030 //エフェクト(血)を表示
2024- SetHumanBlood(tx, ty, tz);
2031+ SetHumanBlood(tx, ty, tz, HUMAN_DAMAGE_ZOMBIEU);
20252032
20262033 //効果音を再生
20272034 GameSound->HitHuman(tx, ty, tz);