небольшой фиксик (симка) воллрана
This commit is contained in:
1 parent
0fca1a32f9
commit
d2c5c45604
1 file changed
+20
-7
+20
-7
@@ -88,12 +88,25 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
var forwardInWallPlane = Vector3.ProjectOnPlane(_motor.CharacterForward, _wallNormal).normalized;
|
||||
if (forwardInWallPlane.sqrMagnitude < 0.01f)
|
||||
{
|
||||
var fallbackRight = Vector3.Cross(_wallNormal, _wallTangentUp).normalized;
|
||||
var candidateRight = Vector3.Cross(_wallNormal, _motor.CharacterUp);
|
||||
candidateRight = Vector3.ProjectOnPlane(candidateRight, _wallNormal).normalized;
|
||||
|
||||
if (candidateRight.sqrMagnitude < 0.01f)
|
||||
{
|
||||
candidateRight = Vector3.Cross(_wallNormal, Vector3.up);
|
||||
candidateRight = Vector3.ProjectOnPlane(candidateRight, _wallNormal).normalized;
|
||||
}
|
||||
|
||||
if (candidateRight.sqrMagnitude < 0.01f)
|
||||
{
|
||||
candidateRight = Vector3.Cross(_wallNormal, Vector3.right).normalized;
|
||||
}
|
||||
|
||||
var dotWithRight = Vector3.Dot(_motor.CharacterRight, _wallNormal);
|
||||
forwardInWallPlane = dotWithRight < 0 ? fallbackRight : -fallbackRight;
|
||||
forwardInWallPlane = dotWithRight < 0 ? candidateRight : -candidateRight;
|
||||
}
|
||||
|
||||
_wallTangentRight = forwardInWallPlane;
|
||||
_wallTangentRight = forwardInWallPlane.normalized;
|
||||
_wallTangentUp = Vector3.Cross(_wallTangentRight, -_wallNormal).normalized;
|
||||
|
||||
_motor.ForceUnground();
|
||||
@@ -189,13 +202,13 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
{
|
||||
if (!IsWallRunning || !_motor) return;
|
||||
|
||||
if (_motor.CharacterController is not CustomCharacterController controller || !controller.CanJump)
|
||||
if (_motor.CharacterController is not CustomCharacterController { CanJump: true } controller)
|
||||
return;
|
||||
|
||||
IsWallRunning = false;
|
||||
|
||||
var wallAway = _wallNormal;
|
||||
var wallUp = _wallTangentUp;
|
||||
var wallUp = Vector3.ProjectOnPlane(_motor.CharacterUp, _wallNormal).normalized;
|
||||
|
||||
var playerForward = cameraRotation * Vector3.forward;
|
||||
|
||||
@@ -204,8 +217,8 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
|
||||
var jumpDirection =
|
||||
forwardInWallPlane * 0.2f +
|
||||
wallAway * 0.4f +
|
||||
wallUp * 0.4f;
|
||||
wallAway * 0.6f +
|
||||
wallUp * 0.2f;
|
||||
|
||||
jumpDirection = jumpDirection.normalized;
|
||||
|
||||
|
||||
Reference in new issue
Block a user