Merge pull request 'maint: (b144) fixed airborne directional input' (#4) from maint/bugs/b144 into main
Reviewed-on: #4
This commit was merged in pull request #4.
This commit is contained in:
@@ -53,7 +53,7 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
// Save current velocity and get current input direction
|
// Save current velocity and get current input direction
|
||||||
Vector3 currentVelocityVector3 = new Vector3(agent.velocity.x, 0f, agent.velocity.z);
|
Vector3 currentVelocityVector3 = new Vector3(agent.velocity.x, 0f, agent.velocity.z);
|
||||||
Vector2 currentInput = agent.GetComponent<PlayerControls>().rawMoveInput;
|
Vector2 currentInput = agent.GetComponent<PlayerControls>().rawMoveInput;
|
||||||
Vector3 currentInputVector3 = Camera.main.transform.rotation.Flatten(0, null, 0) * new Vector3(currentInput.x, 0f, currentInput.y);
|
Vector3 currentInputVector3 = new Vector3(currentInput.x, 0f, currentInput.y);
|
||||||
|
|
||||||
// Ignore rotation for the current velocity
|
// Ignore rotation for the current velocity
|
||||||
Vector3 currentVelocityWorld = agent.transform.InverseTransformDirection(currentVelocityVector3.normalized);
|
Vector3 currentVelocityWorld = agent.transform.InverseTransformDirection(currentVelocityVector3.normalized);
|
||||||
@@ -78,22 +78,24 @@ namespace NodeCanvas.Tasks.Actions {
|
|||||||
|
|
||||||
// Remap the dot to set -1 (opposing direction) to -.5f, and 1 (same direciton) to 1.2f
|
// Remap the dot to set -1 (opposing direction) to -.5f, and 1 (same direciton) to 1.2f
|
||||||
// This is done to allow some sideways jumping direction change, but none backwards, and all forwards
|
// This is done to allow some sideways jumping direction change, but none backwards, and all forwards
|
||||||
float remappedAirDirectionDot = Mathf.Lerp(.3f, 1.2f, airMoveDirectionDot);
|
float remappedAirDirectionDot = Mathf.Lerp(.1f, 1.2f, airMoveDirectionDot);
|
||||||
remappedAirDirectionDot = Mathf.Clamp(remappedAirDirectionDot, 0f, 1f);
|
remappedAirDirectionDot = Mathf.Clamp(remappedAirDirectionDot, 0f, 1f);
|
||||||
|
|
||||||
// Lerp between the current direction and the inputted direction based on the previous dot product
|
|
||||||
Vector3 outputDirection = Vector3.Lerp(currentVelocityVector3.normalized, currentInputVector3.normalized, remappedAirDirectionDot);
|
|
||||||
|
|
||||||
// If there is a direction force, lean into that based on it's strength
|
// Lerp between the current direction and the inputted direction based on the previous dot product
|
||||||
|
Vector3 outputDirection = Vector3.Lerp(currentInputVector3.normalized, currentVelocityVector3.normalized, remappedAirDirectionDot);
|
||||||
|
|
||||||
|
// If there is a directional force (such as the Wall Climb jump going straight upward) supplied in the task, lean into that based on it's strength
|
||||||
outputDirection = Vector3.Lerp(outputDirection, directionalForce.value.normalized, directionalForceStrength.value).normalized;
|
outputDirection = Vector3.Lerp(outputDirection, directionalForce.value.normalized, directionalForceStrength.value).normalized;
|
||||||
|
|
||||||
// Extra math to degrade current air move direction by velocity inheritence, before applying new air direction
|
// Extra math to degrade current air move direction by velocity inheritence, before applying new air direction
|
||||||
airMoveDirection.value *= currentVelocityInheritence.value;
|
airMoveDirection.value *= currentVelocityInheritence.value;
|
||||||
|
|
||||||
// Set air move direciton
|
// Account for the camera's rotation before setting it as the air move direction
|
||||||
|
outputDirection = Camera.main.transform.rotation.Flatten(0, null, 0) * outputDirection;
|
||||||
|
|
||||||
|
// Set air move direction
|
||||||
airMoveDirection.value += outputDirection * outputVelocity;
|
airMoveDirection.value += outputDirection * outputVelocity;
|
||||||
}
|
}
|
||||||
|
|
||||||
EndAction(true);
|
EndAction(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user