殺虫侍
読み取り中…
検索中…
一致する文字列を見つけられません
enemy.h
[詳解]
1
7#pragma once
8#include "actor.h"
10#include "collider.h"
11
12class Player;
13
18{
21};
22
29class Enemy : public Actor
30{
31public:
33 Enemy();
34
36 ~Enemy();
37
43 void Initialize(Renderer &renderer, Player* pPlayer);
44
46 void Setup() override;
47
49 void Update() override;
50
52 void Draw() override;
53
55 void Terminate() override;
56
61 const Collider& GetCollider() const { return m_collider; }
62
67 void TakeDamage(int amount);
68
73 void SetPosition(const DirectX::XMFLOAT3& pos) { m_position = pos; }
74
79 void SetMoveType(MoveType type) { m_moveType = type; }
80
82 void Attack();
83
88 bool IsDead() const { return m_isDead; }
89
91 void CancelAttack();
92
93private:
95 void move();
97 void look();
99 void calcMoveAxis();
101 void calcBoxPos();
103 void calcBoxRot();
111 float lerpAngle(float a, float b, float t);
113 void knockback();
115 void curveLook();
117 void basicLook();
119 void setTargetPosRandom();
120
121 BoxModel m_boxBody;
122 BoxModel m_boxRight;
123 BoxModel m_boxLeft;
124 Player* m_pPlayer = nullptr;
125 Collider m_collider;
126 Renderer* m_pRenderer = nullptr;
127
128 DirectX::XMFLOAT3 m_position = { 0, 0, -5.f };
129 DirectX::XMFLOAT4 m_rotation = { 0, 0, 0, 0 };
130
131 DirectX::XMFLOAT3 m_forward = { 0, 0, 1 };
132 DirectX::XMFLOAT3 m_right = { 1, 0, 0 };
133
134 float m_yaw;
135 float m_pitch;
136
137 int m_health = 30;
138
139 bool m_isHit = false;
140 bool m_isKnockback = false;
141 float m_hitTimer = 0.f;
142 float m_knockbackTimer = 0.f;
143 static constexpr float HIT_DURATION = 0.25f;
144 static constexpr float KNOCKBACK_DURATION = 0.5f;
145
146 float m_wingTimer = 0.f;
147 float m_waveTimer = 0.f;
148
149 MoveType m_moveType = MoveType::Basic;
150
151 float m_sideYawOffset = 0.f;
152 float m_dirChangeTimer = 0.f;
153
154 DirectX::XMFLOAT3 m_targetPos{ 0,0,0 };
155
156 float m_targetTimer = 0.f;
157 float m_targetDuration = 3.f;
158
159 bool m_isAttack = false;
160 float m_attackTimer = 0.f;
161
162 bool m_isDead = false;
163 float m_deadTimer = 0.f;
164};
アクターの基底クラス定義
ボックス形状モデルクラスの定義
ゲーム内アクター(プレイヤー・敵など)の純粋仮想基底クラス
Definition actor.h:15
ボックス(直方体)形状の 3D モデルクラス
Definition box_model.h:16
球体ベースの当たり判定コンポーネント
Definition collider.h:19
void Draw() override
描画処理
Definition enemy.cpp:137
void Setup() override
シーン開始時の初期化処理
Definition enemy.cpp:28
void SetPosition(const DirectX::XMFLOAT3 &pos)
ワールド座標を設定する
Definition enemy.h:73
void Initialize(Renderer &renderer, Player *pPlayer)
レンダラーとプレイヤーポインタを受け取って初期化する
Definition enemy.cpp:15
void CancelAttack()
進行中の攻撃をキャンセルする
Definition enemy.cpp:388
void Update() override
毎フレームの更新処理
Definition enemy.cpp:53
bool IsDead() const
死亡しているか判定する
Definition enemy.h:88
const Collider & GetCollider() const
当たり判定コライダーを取得する
Definition enemy.h:61
Enemy()
コンストラクタ
Definition enemy.cpp:6
void Attack()
攻撃アクションを開始する
Definition enemy.cpp:383
void SetMoveType(MoveType type)
移動パターンを設定する
Definition enemy.h:79
~Enemy()
デストラクタ
Definition enemy.cpp:10
void TakeDamage(int amount)
ダメージを受ける
Definition enemy.cpp:334
void Terminate() override
終了処理・リソース解放
Definition enemy.cpp:146
プレイヤーキャラクタークラス
Definition player.h:22
Direct3D 11 デバイスとスワップチェーンを管理するレンダラークラス
Definition renderer.h:21
球体コライダーコンポーネントの定義
MoveType
敵の移動パターンを表す列挙型
Definition enemy.h:18
@ Curve
曲線的な移動
Definition enemy.h:19
@ Basic
直線的な基本移動
Definition enemy.h:20