Anim tweaking, simplified (+ non-broken) water drag logic
This commit is contained in:
@@ -260,9 +260,9 @@ namespace Barotrauma
|
|||||||
float slowdownAmount = 0.0f;
|
float slowdownAmount = 0.0f;
|
||||||
if (currentHull != null)
|
if (currentHull != null)
|
||||||
{
|
{
|
||||||
//full slowdown (1.0f) when water is up to the torso
|
//full slowdown (1.5f) when water is up to the torso
|
||||||
surfaceY = ConvertUnits.ToSimUnits(currentHull.Surface);
|
surfaceY = ConvertUnits.ToSimUnits(currentHull.Surface);
|
||||||
slowdownAmount = MathHelper.Clamp((surfaceY - colliderPos.Y) / torsoPosition, 0.0f, 1.0f);
|
slowdownAmount = MathHelper.Clamp((surfaceY - colliderPos.Y) / torsoPosition, 0.0f, 1.0f) * 1.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float maxSpeed = Math.Max(TargetMovement.Length() - slowdownAmount, 1.0f);
|
float maxSpeed = Math.Max(TargetMovement.Length() - slowdownAmount, 1.0f);
|
||||||
@@ -751,9 +751,9 @@ namespace Barotrauma
|
|||||||
ladderSimPos += character.SelectedConstruction.Submarine.SimPosition - currentHull.Submarine.SimPosition;
|
ladderSimPos += character.SelectedConstruction.Submarine.SimPosition - currentHull.Submarine.SimPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
MoveLimb(head, new Vector2(ladderSimPos.X - 0.27f * Dir, Collider.SimPosition.Y + 0.7f - colliderHeightFromFloor), 10.5f);
|
MoveLimb(head, new Vector2(ladderSimPos.X - 0.27f * Dir, Collider.SimPosition.Y + 0.9f - colliderHeightFromFloor), 10.5f);
|
||||||
MoveLimb(torso, new Vector2(ladderSimPos.X - 0.27f * Dir, Collider.SimPosition.Y + 0.5f - colliderHeightFromFloor), 10.5f);
|
MoveLimb(torso, new Vector2(ladderSimPos.X - 0.27f * Dir, Collider.SimPosition.Y + 0.7f - colliderHeightFromFloor), 10.5f);
|
||||||
MoveLimb(waist, new Vector2(ladderSimPos.X - 0.35f * Dir, Collider.SimPosition.Y + 0.4f - colliderHeightFromFloor), 10.5f);
|
MoveLimb(waist, new Vector2(ladderSimPos.X - 0.35f * Dir, Collider.SimPosition.Y + 0.6f - colliderHeightFromFloor), 10.5f);
|
||||||
|
|
||||||
if (!character.IsRemotePlayer)
|
if (!character.IsRemotePlayer)
|
||||||
{
|
{
|
||||||
@@ -764,9 +764,9 @@ namespace Barotrauma
|
|||||||
|
|
||||||
Vector2 handPos = new Vector2(
|
Vector2 handPos = new Vector2(
|
||||||
ladderSimPos.X,
|
ladderSimPos.X,
|
||||||
Collider.SimPosition.Y + 0.6f + movement.Y * 0.1f - ladderSimPos.Y);
|
Collider.SimPosition.Y + 0.8f + movement.Y * 0.1f - ladderSimPos.Y);
|
||||||
|
|
||||||
handPos.Y = Math.Min(-0.5f, handPos.Y) - colliderHeightFromFloor;
|
handPos.Y = Math.Min(-0.2f, handPos.Y) - colliderHeightFromFloor;
|
||||||
|
|
||||||
MoveLimb(leftHand,
|
MoveLimb(leftHand,
|
||||||
new Vector2(handPos.X,
|
new Vector2(handPos.X,
|
||||||
@@ -783,7 +783,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
Vector2 footPos = new Vector2(
|
Vector2 footPos = new Vector2(
|
||||||
handPos.X - Dir * 0.05f,
|
handPos.X - Dir * 0.05f,
|
||||||
Collider.SimPosition.Y + 0.7f - colliderHeightFromFloor - stepHeight * 2.7f - ladderSimPos.Y - 0.7f);
|
Collider.SimPosition.Y + 0.9f - colliderHeightFromFloor - stepHeight * 2.7f - ladderSimPos.Y - 0.7f);
|
||||||
|
|
||||||
//if (movement.Y < 0) footPos.Y += 0.05f;
|
//if (movement.Y < 0) footPos.Y += 0.05f;
|
||||||
|
|
||||||
|
|||||||
@@ -382,24 +382,16 @@ namespace Barotrauma
|
|||||||
//buoyancy
|
//buoyancy
|
||||||
Vector2 buoyancy = new Vector2(0, Mass * 9.6f);
|
Vector2 buoyancy = new Vector2(0, Mass * 9.6f);
|
||||||
|
|
||||||
//drag
|
|
||||||
Vector2 velDir = Vector2.Normalize(LinearVelocity);
|
|
||||||
|
|
||||||
Vector2 line = new Vector2((float)Math.Cos(body.Rotation), (float)Math.Sin(body.Rotation));
|
|
||||||
line *= Math.Max(height + radius*2, height);
|
|
||||||
|
|
||||||
Vector2 normal = new Vector2(-line.Y, line.X);
|
|
||||||
normal = Vector2.Normalize(-normal);
|
|
||||||
|
|
||||||
float dragDot = Math.Abs(Vector2.Dot(normal, velDir));
|
|
||||||
Vector2 dragForce = Vector2.Zero;
|
Vector2 dragForce = Vector2.Zero;
|
||||||
if (dragDot > 0)
|
|
||||||
|
if (LinearVelocity.LengthSquared() > 0.00001f)
|
||||||
{
|
{
|
||||||
|
//drag
|
||||||
|
Vector2 velDir = Vector2.Normalize(LinearVelocity);
|
||||||
|
|
||||||
float vel = LinearVelocity.Length() * 2.0f;
|
float vel = LinearVelocity.Length() * 2.0f;
|
||||||
float drag = dragDot * vel * vel
|
float drag = vel * vel * Math.Max(height + radius * 2, height);
|
||||||
* Math.Max(height + radius * 2, height);
|
dragForce = Math.Min(drag, Mass * 500.0f) * -velDir;
|
||||||
dragForce = Math.Min(drag, Mass * 1000.0f) * -velDir;
|
|
||||||
//if (dragForce.Length() > 100.0f) { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body.ApplyForce(dragForce + buoyancy);
|
body.ApplyForce(dragForce + buoyancy);
|
||||||
|
|||||||
Reference in New Issue
Block a user