diff --git a/ToyEngine/src/DemoWorld.cpp b/ToyEngine/src/DemoWorld.cpp index 9d862cf..701baec 100644 --- a/ToyEngine/src/DemoWorld.cpp +++ b/ToyEngine/src/DemoWorld.cpp @@ -65,7 +65,7 @@ DemoWorld::DemoWorld() if (i != 0) { - float ks = 300, kd = 100; + float ks = 300, kd = 500; physicsManager.addSpring(particles[i - 1], particle, 0.005, ks, kd); } } @@ -93,9 +93,18 @@ void DemoWorld::logicalTick(float deltaTime) if (abs(throwPerson->getAnimatorCurrentTime() - 3.41f) < 1e-2f) { mk2->setPosition(throwPerson->getPosition() + glm::vec3(-0.5, 2.2, 0)); - mk2->setSpeed(glm::mat3_cast(throwPerson->getRotation() * glm::rotation(glm::vec3(1, 0, 0), glm::normalize(glm::vec3(0, 1, 1)/*方向*/))) * glm::vec3(15/*速度*/, 0, 0)); + mk2->setSpeed(glm::mat3_cast(throwPerson->getRotation() * glm::rotation(glm::vec3(1, 0, 0), glm::normalize(glm::vec3(0, 2, 1)/*方向*/))) * glm::vec3(10/*速度*/, 0, 0)); mk2->setEnableGravity(true); } + + if (mk2->getPosition().y < 6.5f && mk2->getSpeed().y<0) + { + particles[particles.size() / 2]->setSpeed(particles[particles.size() / 2]->getSpeed() + mk2->getSpeed()/2.f); + mk2->setEnableGravity(false); + mk2->setSpeed(glm::vec3(0)); + //mk2->setPosition({ 0,-100,0 }); + } + } void DemoWorld::rendererTick(float deltaTime) diff --git a/ToyEngine/src/Particle.cpp b/ToyEngine/src/Particle.cpp index e2e4032..a083b3a 100644 --- a/ToyEngine/src/Particle.cpp +++ b/ToyEngine/src/Particle.cpp @@ -120,8 +120,8 @@ void Particle::setEnableGravity(bool enable) if (!gravity) { gravity = std::make_shared(glm::vec3(0.f, -getMass() * 9.80665f, 0.f)); - addForce(gravity); } + addForce(gravity); } else {