//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Name : 更新 // Description : いろんな更新 // Arguments : ないよ // Returns : ないよ //━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ void CFlower::Update() { switch(m_nPhase) { case FLOWER_PHASE_INIT: m_lastTime = CTimer::GetTime(); m_nPhase++; break; case FLOWER_PHASE_START: RotationZ((float)(m_nowTime - m_lastTime) * m_rotSpd); m_nowTime = CTimer::GetTime(); if(m_nowTime - m_lastTime > abs(m_rotSpd)){ m_nPhase = FLOWER_PHASE_FLOWER; } break; case FLOWER_PHASE_FLOWER: RotationZ(m_rotSpd * abs(m_rotSpd)); break; case FLOWER_PHASE_WAIT: RotationZ(m_rotSpd); break; case FLOWER_PHASE_UNINIT: break; } Translate(m_pos); Animation(); }
// 武器の移動(ガン) void CWeapon_Gun::Move() { //ブレード左手に持たせる CModelBone* b = Owner->GetBone(L"R_kobusi_Joint"); //地上攻撃角度 if (gun_hande_Angle == normal_on) { Rotation = RotationY(0.027f)*RotationX(0.245f)*RotationY(-0.02f)*b->Rotation; Position = b->Position + CVector(0.23f, -2.0f, 0.5f)*b->Rotation; } //空中攻撃角度 if (gun_hande_Angle == air_on) { Rotation = RotationY(0.043f)*RotationX(0.22f)*RotationZ(0.0025f)*b->Rotation; Position = b->Position + CVector(0.23f, -2.0f, 0.5f)*b->Rotation; } if (gun != 0) { //ガン出現 Color = CColor(1, 1, 1, 1.0f); } else if (gun == 0) { //ガン透明 Color = CColor(1, 1, 1, 0.0f); } if (beam_launch == beam_on) { Weapon_GunList.Apply([&](CMover* g) { New<CBullet>(Position + CVector(0.0f, 0.0f, 5.2f)*g->Rotation); }); } }
void animateScene(int value) { glutTimerFunc(REFRESH_MILISECS, animateScene, 0); static float scale = 1.0f; VECTOR4D Speed = { 0.02f, 0.02f, 0.02f, 0.0f }; //MATRIX4D P = PerspectiveWidthHeightRH(0.5f, 0.5f, 1.0f, 10.0f); MATRIX4D InvV = FastInverse(Vi); VECTOR4D XDir = { InvV.m00, InvV.m10, InvV.m20, 0.0f }; VECTOR4D YDir = { InvV.m01, InvV.m11, InvV.m21, 0.0f }; VECTOR4D ZDir = { InvV.m02, InvV.m12, InvV.m22, 0.0f }; VECTOR4D EyePos = { InvV.m03, InvV.m13, InvV.m23, 1.0f }; P = PerspectiveWidthHeightRH(0.5f, 0.5f, 1.0f, 10.0f); if (bLeft) EyePos = EyePos + XDir * Speed; if (bRight) EyePos = EyePos - XDir * Speed; if (bDown) EyePos = EyePos + YDir * Speed; if (bUp) EyePos = EyePos - YDir * Speed; if (bBackward) EyePos = EyePos + ZDir * Speed; if (bForward) EyePos = EyePos - ZDir * Speed; InvV.m03 = EyePos.x; InvV.m13 = EyePos.y; InvV.m23 = EyePos.z; Vi = FastInverse(InvV); if (bRotateX) R = R * RotationX(INCREMENT); if (bRotateY) R = R * RotationY(INCREMENT); if (bRotateZ) R = R * RotationZ(INCREMENT); if (bScaleUp) scale += INCREMENT; if (bScaleDown) scale -= INCREMENT; T = (P * Vi) * R * Scaling(scale, scale, scale); glutPostRedisplay(); }
void CEnemy5::Move() { if (Time % 45 == 10)Texture = GetTexture(L"bakudan1.png"); if (Time % 45 == 20)Texture = GetTexture(L"bakudan2.png"); Time++; Scale = CVector(1, 1, 1)*0.08f; Rotation *= RotationZ(0.02f); Position += Velocity; CVector v = Velocity; CHitRectangle hit; (0.3f, 0.3f, 0.3f, 0.3f); Apply(BlockList, hit); Apply(Block1List, hit); Apply(Block2List, hit); Apply(Block3List, hit); Apply(Block5List, hit); Apply(Block6List, hit); Apply(Block7List, hit); Apply(Block8List, hit); Apply(Block9List, hit); Apply(Block10List, hit); Apply(Block11List, hit); Apply(Block12List, hit); Apply(Block13List, hit); Apply(Block14List, hit); Apply(Block15List, hit); Apply(Block16List, hit); Apply(Block17List, hit); Apply(Block18List, hit); Apply(Block19List, hit); Apply(Block20List, hit); Apply(Block22List, hit); Apply(Block23List, hit); Apply(Block28List, hit); Apply(Block29List, hit); if (hit.Up || hit.Down) Velocity.Y = -v.Y; if (hit.Left || hit.Right) Velocity.X = -v.X; }
G3D::Matrix4 Utils::GetTransformation(IDefinition def) { G3D::Matrix4 translation; if (def.Position.x == 0.0f && def.Position.y == 0.0f && def.Position.z == 0.0f) translation = G3D::Matrix4::identity(); else translation = G3D::Matrix4::translation(-(def.Position.z - Constants::MaxXY), -(def.Position.x - Constants::MaxXY), def.Position.y); G3D::Matrix4 rotation = RotationX(ToRadians(def.Rotation.z)) * RotationY(ToRadians(def.Rotation.x)) * RotationZ(ToRadians(def.Rotation.y + 180)); if (def.Scale() < 1.0f || def.Scale() > 1.0f) return G3D::Matrix4::scale(def.Scale()) * rotation * translation; return rotation * translation; }
Matrix4 Matrix4::Rotation(float Yaw, float Pitch, float Roll) { return RotationY(Yaw) * RotationX(Pitch) * RotationZ(Roll); }