public void Init() { // deprecated variables warnings: if (jumpForce != 0 && jumpHeight == 0) { Debug.LogError("PlayerController.jumpForce is deprecated. Use jumpHeight instead."); jumpHeight = jumpForce; } if (jumpDownwardForce != 0 && gravity == 0) { Debug.LogError("PlayerController.jumpDownwardForce is deprecated. Use gravity instead."); gravity = jumpDownwardForce; } // rigidbody should no longer use gravity, be kinematic, and freeze all constraints Rigidbody playerRigibody = GetComponent<Rigidbody>(); if (playerRigibody != null) { if (playerRigibody.useGravity) { Debug.LogError("The rigidbody no longer needs to use gravity. Disabling."); playerRigibody.useGravity = false; } if (!playerRigibody.isKinematic) { Debug.LogError("The rigidbody should be kinematic. Enabling."); playerRigibody.isKinematic = true; } if (playerRigibody.constraints != RigidbodyConstraints.FreezeAll) { Debug.LogError("The rigidbody should freeze all constraints. The PlayerController will take care of the physics."); playerRigibody.constraints = RigidbodyConstraints.FreezeAll; } } cameraController = CameraController.instance; infiniteObjectGenerator = InfiniteObjectGenerator.instance; powerUpManager = PowerUpManager.instance; gameManager = GameManager.instance; if (attackType == AttackType.Projectile) { projectileManager = GetComponent<ProjectileManager>(); } platformLayer = 1 << LayerMask.NameToLayer("Platform"); floorLayer = 1 << LayerMask.NameToLayer("Floor"); wallLayer = 1 << LayerMask.NameToLayer("Wall"); obstacleLayer = 1 << LayerMask.NameToLayer("Obstacle"); thisTransform = transform; capsuleCollider = GetComponent<CapsuleCollider>(); playerAnimation = GetComponent<PlayerAnimation>(); playerAnimation.Init(); startPosition = thisTransform.position; startRotation = thisTransform.rotation; slideData = new CoroutineData(); stumbleData = new CoroutineData(); forwardSpeeds.Init(); // determine the fastest and the slowest forward speeds forwardSpeeds.GetMinMaxValue(out minForwardSpeed, out maxForwardSpeed); forwardSpeedDelta = maxForwardSpeed - minForwardSpeed; if (forwardSpeedDelta == 0) { playerAnimation.SetRunSpeed(1, 1); } ResetValues(false); enabled = false; }