1 #pragma once//☀SDXFramework
2 #include <SDXFrameWork.h>
27 if (model->
GetX() < 移動範囲.GetLeft())
29 if (角度 > PAI / 2 && 角度 < PAI * 3 / 2)
35 if (model->
GetX() > 移動範囲.GetRight())
37 if (角度 < PAI / 2 || 角度 > PAI * 3 / 2)
42 else if (model->
GetY() < 移動範囲.GetTop())
49 else if (model->
GetY() > 移動範囲.GetBottom())
57 if (角度 < 0) 角度 += PAI * 2;
58 if (角度 > PAI * 2) 角度 -= PAI * 2;
66 const double lx = 目標X - model->
GetX();
67 const double ly = 目標Y - model->
GetY();
69 if (lx * lx + ly * ly <= 速度 * 速度)
75 const double angle = atan2(ly, lx);
98 状態.preX = cos(状態.angle) * 半径X;
99 状態.preY = sin(状態.angle) * 半径Y;
104 const double nextX = cos(状態.angle) * 半径X;
105 const double nextY = sin(状態.angle) * 半径Y;
107 model->
Move(nextX - 状態.preX, nextY - 状態.preY);
122 状態.moveX =
Rand::Get(-X振幅, X振幅) - 状態.moveX;
123 状態.moveY =
Rand::Get(-Y振幅, Y振幅) - 状態.moveY;
124 model->
Move(状態.moveX, 状態.moveY);
ShapeとSpriteをまとめて、2Dモデルを表すクラス.
Definition: Model.h:12
void MoveFront(double 速度)
Modelの向きに移動.
Definition: ModelMove.h:18
矩形を表す図形クラス.
Definition: Shape.h:702
void Vibrate(VibrateState &状態, double X振幅, double Y振幅)
範囲内でランダムに移動.
Definition: ModelMove.h:120
bool MoveToPoint(double 速度, double 目標X, double 目標Y)
目標座標まで移動.
Definition: ModelMove.h:64
void MovePolar(double 距離, double 角度)
極座標で移動.
Definition: Model.h:131
void MoveBound(double 速度, double &角度, Rect &移動範囲)
範囲外に出ると反転する.
Definition: ModelMove.h:24
double GetAngle()
角度を取得する.
Definition: Model.h:186
double GetY() const
Y座標を取得.
Definition: Model.h:229
void Move(double X移動量, double Y移動量)
相対座標で移動.
Definition: Model.h:125
Definition: ModelMove.h:81
double GetX() const
X座標を取得.
Definition: Model.h:223
void MoveCircle(double 角速度, MoveCircleState &状態, double 半径X, double 半径Y)
円周上を移動.
Definition: ModelMove.h:94
Definition: ModelMove.h:113
static double Get(double 最大値)
0~最大値の乱数を取得.
Definition: Rand.h:22
Modelの移動を行うクラス.
Definition: ModelMove.h:8
void SetPos(double X座標, double Y座標)
指定座標に移動.
Definition: Model.h:137