55 lines
1007 B
C++
55 lines
1007 B
C++
#include "ActiveObject.h"
|
||
void ActiveObject::SetPosition(VecFPos3 pos)
|
||
{
|
||
BaseObject::SetPosition(pos);
|
||
}
|
||
|
||
void ActiveObject::SetYpos(int y)
|
||
{
|
||
BaseObject::SetYpos(y);
|
||
}
|
||
|
||
void ActiveObject::SetSpeed(VecSpeed3 speed)
|
||
{
|
||
this->Speed = speed;
|
||
}
|
||
|
||
VecSpeed3 ActiveObject::GetSpeed()
|
||
{
|
||
return this->Speed;
|
||
}
|
||
|
||
void ActiveObject::OnUpdate(float deltaTime)
|
||
{
|
||
|
||
VecFPos3 MovePos;
|
||
// X轴移动(含余数补偿)
|
||
if (Speed.x != 0)
|
||
{
|
||
MovePos.x = Speed.x * deltaTime;
|
||
}
|
||
|
||
// Y轴移动(同上)
|
||
if (Speed.y != 0)
|
||
{
|
||
MovePos.y = Speed.y * deltaTime;
|
||
}
|
||
|
||
// Z轴重力与移动(含余数补偿)
|
||
if (Position.z > 0 || Speed.z > 0)
|
||
{
|
||
int speedZTotal = -1020 * deltaTime;
|
||
|
||
// 基于更新后的Speed.z计算移动量(同样含余数)
|
||
MovePos.z = Speed.z * deltaTime;
|
||
}
|
||
else if (Position.z < 0)
|
||
{
|
||
Position.z = 0;
|
||
Speed.z = 0;
|
||
SetPosition(Position);
|
||
}
|
||
|
||
MoveBy(MovePos);
|
||
}
|