From dbae5cb272d9c00a88e236a4bf569e36427f7fa2 Mon Sep 17 00:00:00 2001 From: wuyize Date: Thu, 20 Apr 2023 13:40:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=8B=E9=9B=B7=E5=AF=B9?= =?UTF-8?q?=E5=90=8A=E6=A1=A5=E6=89=B0=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ToyEngine/src/DemoWorld.cpp | 13 +++++++++++-- ToyEngine/src/Particle.cpp | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) 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 {