質問編集履歴

2

クラスの説明を追記

2021/08/28 17:25

投稿

piced
piced

スコア60

test CHANGED
File without changes
test CHANGED
@@ -48,6 +48,56 @@
48
48
 
49
49
 
50
50
 
51
+ #各クラスの説明
52
+
53
+ 自分はUnityのコードスタイルをマネしており、
54
+
55
+ そこから推測していただけるとわかりやすいかもしれません。
56
+
57
+
58
+
59
+ - Player
60
+
61
+ 操作するオブジェクトです。描画は行わず、キャラの表現はDollに任せています。
62
+
63
+
64
+
65
+ - Doll
66
+
67
+ MotionData.Keyframes[キーフレーム番号].partsData[パーツ番号]から
68
+
69
+ メンバのm_partsの制御を行います。
70
+
71
+ partsDataから情報を読み取り、Partsのローカル位置、ローカル角度、ローカル拡縮、
72
+
73
+ テクスチャ原点、可視/不可視を更新します。
74
+
75
+ ローカル位置、ローカル角度、ローカル拡縮、テクスチャ原点については、
76
+
77
+ 滑らかに表現するため、キーフレーム間で線形補間を行います。
78
+
79
+ - Parts
80
+
81
+ 親オブジェクトに常に追従します。
82
+
83
+ キャラの関節などを表現するためにローカル空間の概念があります。
84
+
85
+ m_ownerDollは自分を保有しているDoll、
86
+
87
+ m_parentIndexは親パーツの添え字番号で、
88
+
89
+ m_ownerDoll.m_parts[]から親パーツへアクセスします。
90
+
91
+ - GameObject
92
+
93
+ Unityでいうtransformと、テクスチャ表示機能があります。
94
+
95
+ これが位置や角度、オフセットといった情報を持っています。
96
+
97
+ 詳細はTransform2D.h、TextureRenderer.hを参照ください。
98
+
99
+
100
+
51
101
  #ヘッダ
52
102
 
53
103
  ```C++
@@ -236,6 +286,206 @@
236
286
 
237
287
  };
238
288
 
239
-
240
-
241
- ```
289
+ ```
290
+
291
+ ```C++
292
+
293
+ //Parts.h
294
+
295
+ #pragma once
296
+
297
+ #include "object.h"
298
+
299
+ class Doll;
300
+
301
+ class DollEditor;
302
+
303
+ class Parts :public GameObject
304
+
305
+ {
306
+
307
+ friend Doll;
308
+
309
+ friend DollEditor;
310
+
311
+
312
+
313
+ private:
314
+
315
+ const Doll *m_ownerDoll; //このパーツを持っているDoll
316
+
317
+ short m_parentIndex; //親パーツのパーツ番号 (m_ownerDollのパーツにアクセスするときに使う)
318
+
319
+ bool m_isVisible; //描画するかどうか (true = 見える)
320
+
321
+ Transform2D m_local; //ローカル空間の情報(ワールド空間はm_transform)
322
+
323
+
324
+
325
+ public:
326
+
327
+ static const short NoParentIndex = -1; //親のパーツが無い時の番号 parentIndexで使う
328
+
329
+
330
+
331
+ public:
332
+
333
+ Parts();
334
+
335
+ void Init(const Doll *ownerDoll);
336
+
337
+ void Update();
338
+
339
+ void Draw()override;
340
+
341
+ };
342
+
343
+ ```
344
+
345
+ ```C++
346
+
347
+ //GameObject.h
348
+
349
+
350
+
351
+ #pragma once
352
+
353
+ #include "main.h"
354
+
355
+ #include "Transform2D.h"
356
+
357
+ #include "TextrureRenderer.h"
358
+
359
+
360
+
361
+
362
+
363
+ class GameObject
364
+
365
+ {
366
+
367
+ //メンバ変数
368
+
369
+ protected:
370
+
371
+ bool m_active; //true = 活動中
372
+
373
+ Transform2D m_transform; //位置、拡縮、角度の情報
374
+
375
+ TextrureRenderer m_texRenderer; //テクスチャ情報
376
+
377
+
378
+
379
+ //プロトタイプ宣言
380
+
381
+ public:
382
+
383
+ virtual void Init(); //初期化
384
+
385
+ virtual void Draw(); //描画処理
386
+
387
+
388
+
389
+ //セッター&ゲッター
390
+
391
+ bool IsActive()const;
392
+
393
+ void SetActive(bool);
394
+
395
+ Transform2D GetTransform()const;
396
+
397
+ void SetTransform(Transform2D);
398
+
399
+ void SetPosition(Vector2);
400
+
401
+ void SetScale(Vector2);
402
+
403
+ void SetAngle(float);
404
+
405
+ TextrureRenderer GetTextrureRenderer()const;
406
+
407
+ void SetTextureRenderer(TextrureRenderer);
408
+
409
+ };
410
+
411
+ ```
412
+
413
+ ```C++
414
+
415
+ //Transfrom2D.h
416
+
417
+ #pragma once
418
+
419
+ #include "Vector2.h"
420
+
421
+
422
+
423
+ struct Transform2D
424
+
425
+ {
426
+
427
+ Vector2 position;
428
+
429
+ Vector2 scale;
430
+
431
+ float angle;
432
+
433
+
434
+
435
+ Transform2D();
436
+
437
+ static Transform2D Transition(Transform2D min, Transform2D max, float percent);
438
+
439
+ };
440
+
441
+ ```
442
+
443
+ ```C++
444
+
445
+ //TextrureRenderer.h
446
+
447
+ #pragma once
448
+
449
+
450
+
451
+ #include "polygonDrawer.h"
452
+
453
+ #include "Transform2D.h"
454
+
455
+ #include "Color.h"
456
+
457
+ #include "Vector2.h"
458
+
459
+ #include "texMgr.h"
460
+
461
+
462
+
463
+ struct TextrureRenderer
464
+
465
+ {
466
+
467
+ Texture m_texture; //テクスチャ
468
+
469
+ Vector2 m_polygonSize; //ポリゴン矩形の大きさ(横幅、縦幅)
470
+
471
+ Vector2 m_offset; //原点(この点が中心になるようにずれる)
472
+
473
+ Vector2 m_texUV; //(x,y) = (u,v)
474
+
475
+ Vector2 m_texSize; //x横幅 y縦幅 それぞれ0.0f ~ 1.0f
476
+
477
+ Color m_color; //(red,green,blue,alpha)0.0f~1.0f
478
+
479
+ Transform2D *m_ownerTransform; //位置、角度を参照します
480
+
481
+
482
+
483
+ TextrureRenderer();
484
+
485
+ ~TextrureRenderer();
486
+
487
+ void Draw(bool isUI);
488
+
489
+ };
490
+
491
+ ```

1

抜けていた情報を追加

2021/08/28 17:25

投稿

piced
piced

スコア60

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- その後、アニメーションとは関係のないDollクラスに変更を加えた後、
21
+ その後、アニメーションとは関係のないDollクラスやPlayerクラスに変更を加えた後、
22
22
 
23
23
  再びアニメーションを読み込んだところ、
24
24