public override void HandleReactionAfterStimulus() { ApplyGravity(); ApplyDeltaTime(); ApplyLimitsToVelocity(); PhysicsCollisionController.RayHitSide rayHitSide = GetComponent <PhysicsCollisionController>().CastRays(ref velocity); if (rayHitSide.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.LEFT) { velocity.x = Mathf.Abs(velocity.x); xFacingDir = Vector2.right; } else if (rayHitSide.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.RIGHT) { velocity.x = -Mathf.Abs(velocity.x); xFacingDir = Vector2.left; } else { xFacingDir = Vector2.zero; } ApplyVelocityToPosition(); ApplySpriteDirection(); }
public void HandleMovement() { velocity.y -= gravity * Time.deltaTime; //velocity only used in collision function Vector2 velocityWithDelta = velocity * Time.deltaTime; PhysicsCollisionController.RayHitSide rayHitSideInfo = collisionControler.CastRays(ref velocityWithDelta); if (rayHitSideInfo.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.LEFT || rayHitSideInfo.hor == PhysicsCollisionController.E_RAY_HIT_SIDE.RIGHT) { velocity.x = (velocity.x / 2f) * -1; } if (rayHitSideInfo.ver == PhysicsCollisionController.E_RAY_HIT_SIDE.BOTTOM || rayHitSideInfo.ver == PhysicsCollisionController.E_RAY_HIT_SIDE.BOTTOM) { velocity.x = velocity.x / 1.2f; velocity.y = (velocity.y / 2f) * -1; } transform.Translate(velocity * Time.deltaTime); }