blocking in some more tile stuff!
This commit is contained in:
		@@ -57,8 +57,8 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
    AudioSource audioSource;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void Awake()
 | 
			
		||||
    {  // initialize
 | 
			
		||||
    void Awake() {  
 | 
			
		||||
        // initialize
 | 
			
		||||
        _rb = GetComponent<Rigidbody2D>();
 | 
			
		||||
 | 
			
		||||
        gameUI = GameObject.FindGameObjectWithTag("GameUICanvas").GetComponent<GameUIController>();
 | 
			
		||||
@@ -72,54 +72,44 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
        playerIsAlive = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Start()
 | 
			
		||||
    {
 | 
			
		||||
    void Start() {
 | 
			
		||||
        gameUI.UpdateInstrumentUI();
 | 
			
		||||
        currentDash = dashTime;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Update()
 | 
			
		||||
    {
 | 
			
		||||
        if (playerIsAlive)
 | 
			
		||||
        {
 | 
			
		||||
            if (this.cymbalActiveTime < 0)
 | 
			
		||||
            {
 | 
			
		||||
    void Update() {
 | 
			
		||||
        if (playerIsAlive) {
 | 
			
		||||
            if (this.cymbalActiveTime < 0) {
 | 
			
		||||
                this.gameUI.ToggleCymbal(true);
 | 
			
		||||
            }
 | 
			
		||||
            this.cymbalActiveTime -= Time.deltaTime;
 | 
			
		||||
 | 
			
		||||
            // throw tambourine
 | 
			
		||||
            unlockedTambourine = StateController.Instance.HasTambourine();
 | 
			
		||||
            if (playerInput.actions["ThrowTambourine"].WasPressedThisFrame())
 | 
			
		||||
            {
 | 
			
		||||
            if (playerInput.actions["ThrowTambourine"].WasPressedThisFrame()) {
 | 
			
		||||
                ThrowTambourine();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // grapple
 | 
			
		||||
            tambourine = GameObject.FindGameObjectWithTag("tambourine");
 | 
			
		||||
            if (playerInput.actions["Grapple"].WasPressedThisFrame())
 | 
			
		||||
            {
 | 
			
		||||
            if (playerInput.actions["Grapple"].WasPressedThisFrame()) {
 | 
			
		||||
                AttemptGrapple();
 | 
			
		||||
            }
 | 
			
		||||
            if (playerInput.actions["Grapple"].WasReleasedThisFrame() && grapplingRope.isGrappling)
 | 
			
		||||
            {
 | 
			
		||||
            if (playerInput.actions["Grapple"].WasReleasedThisFrame() && grapplingRope.isGrappling) {
 | 
			
		||||
                LetGoOfGrapple();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // clarinet
 | 
			
		||||
            unlockedClarinet = StateController.Instance.HasClarinet();
 | 
			
		||||
            if (unlockedClarinet)
 | 
			
		||||
            {
 | 
			
		||||
                if (playerInput.actions["ClarinetDive"].WasPressedThisFrame() && !isInWater && !playerController.IsGrounded() && !isDash)
 | 
			
		||||
                {
 | 
			
		||||
            if (unlockedClarinet) {
 | 
			
		||||
                if (playerInput.actions["ClarinetDive"].WasPressedThisFrame() && !isInWater && !playerController.IsGrounded() && !isDash) {
 | 
			
		||||
                    isDash = true;
 | 
			
		||||
                    this.gameUI.ToggleClarinet(false);
 | 
			
		||||
                    playerInput.DeactivateInput();
 | 
			
		||||
                    currentDash = 0.0f;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (!playerController.IsGrounded() && isDash && (currentDash < dashTime))
 | 
			
		||||
                {
 | 
			
		||||
                if (!playerController.IsGrounded() && isDash && (currentDash < dashTime)) {
 | 
			
		||||
                    if (!forceAdded) {
 | 
			
		||||
                        dashVec = new Vector2(1f * forward, -1f) * dashForce;
 | 
			
		||||
                        _rb.AddForce(dashVec, ForceMode2D.Impulse);
 | 
			
		||||
@@ -128,8 +118,8 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
                    currentDash += Time.deltaTime;
 | 
			
		||||
                }
 | 
			
		||||
                else if ((currentDash >= dashTime))  // dash ends
 | 
			
		||||
                {
 | 
			
		||||
                else if ((currentDash >= dashTime)) {
 | 
			
		||||
                    // dash ends
 | 
			
		||||
                    if (!isInWater) {
 | 
			
		||||
                        isDash = false;
 | 
			
		||||
                        this.gameUI.ToggleClarinet(true);
 | 
			
		||||
@@ -150,10 +140,8 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (StateController.Instance.HasCymbal())
 | 
			
		||||
            {
 | 
			
		||||
                if (this.playerInput.actions["CymbalCrash"].WasPressedThisFrame())
 | 
			
		||||
                {
 | 
			
		||||
            if (StateController.Instance.HasCymbal()) {
 | 
			
		||||
                if (this.playerInput.actions["CymbalCrash"].WasPressedThisFrame()) {
 | 
			
		||||
                    // Play the sound
 | 
			
		||||
                    this.gameUI.ToggleCymbal(false);
 | 
			
		||||
                    // this.audioSource.clip = cymbalSound;
 | 
			
		||||
@@ -170,35 +158,28 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Animate()
 | 
			
		||||
    {
 | 
			
		||||
    void Animate() {
 | 
			
		||||
        // start walking
 | 
			
		||||
        if (playerInput.actions["Move"].WasPressedThisFrame())
 | 
			
		||||
        {
 | 
			
		||||
        if (playerInput.actions["Move"].WasPressedThisFrame()) {
 | 
			
		||||
            animator.SetBool("Walking", true);
 | 
			
		||||
        }
 | 
			
		||||
        // return to idle animation
 | 
			
		||||
        if (playerInput.actions["Move"].WasReleasedThisFrame())
 | 
			
		||||
        {
 | 
			
		||||
        if (playerInput.actions["Move"].WasReleasedThisFrame()) {
 | 
			
		||||
            animator.SetBool("Walking", false);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnMove(InputValue value)
 | 
			
		||||
    {
 | 
			
		||||
        if (playerIsAlive)
 | 
			
		||||
        {
 | 
			
		||||
    void OnMove(InputValue value) {
 | 
			
		||||
        if (playerIsAlive) {
 | 
			
		||||
            _hInput = value.Get<Vector2>().x;
 | 
			
		||||
            if (_hInput < 0)
 | 
			
		||||
            {
 | 
			
		||||
                if (forward != -1)
 | 
			
		||||
                { // if character hasnt already flipped 
 | 
			
		||||
            if (_hInput < 0) {
 | 
			
		||||
                if (forward != -1) { 
 | 
			
		||||
                    // if character hasnt already flipped 
 | 
			
		||||
                    FlipRenderer();
 | 
			
		||||
                }
 | 
			
		||||
                forward = -1;
 | 
			
		||||
            }
 | 
			
		||||
            else if (_hInput > 0)
 | 
			
		||||
            {
 | 
			
		||||
            else if (_hInput > 0) {
 | 
			
		||||
                if (forward != 1)
 | 
			
		||||
                { // if character hasnt already flipped 
 | 
			
		||||
                    FlipRenderer();
 | 
			
		||||
@@ -209,69 +190,54 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void FlipRenderer()
 | 
			
		||||
    {
 | 
			
		||||
    void FlipRenderer() {
 | 
			
		||||
        GetComponent<SpriteRenderer>().flipX = !GetComponent<SpriteRenderer>().flipX;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void ThrowTambourine()
 | 
			
		||||
    {
 | 
			
		||||
        if (unlockedTambourine && hasTambourine && !grapplingRope.isGrappling)
 | 
			
		||||
        {
 | 
			
		||||
    void ThrowTambourine() {
 | 
			
		||||
        if (unlockedTambourine && hasTambourine && !grapplingRope.isGrappling) {
 | 
			
		||||
            launcher.ThrowTambourine(forward);
 | 
			
		||||
            SetHasTambourine(false);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void SetHasTambourine(bool state)
 | 
			
		||||
    {
 | 
			
		||||
    public void SetHasTambourine(bool state) {
 | 
			
		||||
        hasTambourine = state;
 | 
			
		||||
        gameUI.ToggleTambourine(state);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void AttemptGrapple()
 | 
			
		||||
    {
 | 
			
		||||
        if (tambourine != null)
 | 
			
		||||
        { // grapple to tambourine
 | 
			
		||||
            if (!grapplingRope.isGrappling && tambourine.GetComponent<TambourineBehavior>().pinned)
 | 
			
		||||
            {
 | 
			
		||||
    void AttemptGrapple() {
 | 
			
		||||
        if (tambourine != null) { // grapple to tambourine
 | 
			
		||||
            if (!grapplingRope.isGrappling && tambourine.GetComponent<TambourineBehavior>().pinned) {
 | 
			
		||||
                grapplingGun.GrappleToTambourine(tambourine);
 | 
			
		||||
                grapplingRope.isGrappling = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            if (grappleSurface != null)
 | 
			
		||||
            {
 | 
			
		||||
        else {
 | 
			
		||||
            if (grappleSurface != null) {
 | 
			
		||||
                grapplingGun.GrappleToSurface(grappleSurface.transform.position);
 | 
			
		||||
                grapplingRope.isGrappling = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void LetGoOfGrapple()
 | 
			
		||||
    {
 | 
			
		||||
    void LetGoOfGrapple() {
 | 
			
		||||
        bool currentlyPaused = StateController.Instance.isPaused;
 | 
			
		||||
        if (grapplingRope.isGrappling && !currentlyPaused)
 | 
			
		||||
        {
 | 
			
		||||
        if (grapplingRope.isGrappling && !currentlyPaused) {
 | 
			
		||||
            print("currently paused is " + currentlyPaused + ", releasing grapple");
 | 
			
		||||
            if (tambourine != null)
 | 
			
		||||
            {
 | 
			
		||||
            if (tambourine != null) {
 | 
			
		||||
                tambourine.GetComponent<TambourineBehavior>().DestroySelf();
 | 
			
		||||
            }
 | 
			
		||||
            grapplingGun.ReleaseGrapple();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Bounce()
 | 
			
		||||
    {
 | 
			
		||||
    void Bounce() {
 | 
			
		||||
        Vector2 reflect;
 | 
			
		||||
        if (Mathf.Abs(saveVelocity.y) < 1f && hasBounced)
 | 
			
		||||
        {
 | 
			
		||||
        if (Mathf.Abs(saveVelocity.y) < 1f && hasBounced) {
 | 
			
		||||
            reflect = Vector2.zero;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
        else {
 | 
			
		||||
            reflect = new Vector2(saveVelocity.x * reflectForce, -(saveVelocity.y) * reflectForce);
 | 
			
		||||
            //reflect = new Vector2(saveVelocity.x * 1.1f, -(saveVelocity.y) * reflectForce);
 | 
			
		||||
            hasBounced = true;
 | 
			
		||||
@@ -281,57 +247,46 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
        isDash = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Water()
 | 
			
		||||
    {
 | 
			
		||||
    void Water() {
 | 
			
		||||
        print("water dash " + isDash);
 | 
			
		||||
        if(isDash)
 | 
			
		||||
        {
 | 
			
		||||
        if(isDash) {
 | 
			
		||||
            saveVelocity = _rb.velocity / velocityCut;
 | 
			
		||||
            if (isDash) {
 | 
			
		||||
                dashVec = new Vector2(1f * forward, -1f) * (dashForce / velocityCut);
 | 
			
		||||
                _rb.AddForce(dashVec, ForceMode2D.Force);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
        else {
 | 
			
		||||
            playerController.FloatGravity(waterGravity);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnTriggerEnter2D(Collider2D col)
 | 
			
		||||
    {
 | 
			
		||||
        if (col.tag == "grappleSurface")
 | 
			
		||||
        {
 | 
			
		||||
    void OnTriggerEnter2D(Collider2D col) {
 | 
			
		||||
        if (col.tag == "grappleSurface") {
 | 
			
		||||
            grappleSurface = col.gameObject;
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "instaDeath")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "instaDeath") {
 | 
			
		||||
            print("player fell in spikes");
 | 
			
		||||
            StartCoroutine(DestroyPlayer());
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "spawnPoint")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "spawnPoint") {
 | 
			
		||||
            StateController.Instance.spawnPoint.GetComponent<SpawnPointBehavior>().DeactivateSpawnPoint();
 | 
			
		||||
            col.GetComponent<SpawnPointBehavior>().ActivateSpawnPoint();
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "Trumpet")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "Trumpet") {
 | 
			
		||||
            this.playerController.in_range = true;
 | 
			
		||||
            this.playerController.enemy = col.transform.parent.gameObject;
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "water")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "water") {
 | 
			
		||||
            isInWater = true;
 | 
			
		||||
            Water();
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "bouncePad")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "bouncePad") {
 | 
			
		||||
            // Assign the player's velocity to zero so that the player can 
 | 
			
		||||
            // bounce on the same jump pad
 | 
			
		||||
            this.playerController.RB.velocity = Vector2.zero;
 | 
			
		||||
            Bouncepad pad = col.GetComponent<Bouncepad>();
 | 
			
		||||
            switch (pad.Direction())
 | 
			
		||||
            {
 | 
			
		||||
            switch (pad.Direction()) {
 | 
			
		||||
                case Bouncepad.Facing.Left:
 | 
			
		||||
                    this.playerController.RB.AddForce(
 | 
			
		||||
                        new Vector2(-pad.bounceForce, pad.verticalModifier * pad.bounceForce),
 | 
			
		||||
@@ -348,19 +303,15 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnTriggerExit2D(Collider2D col)
 | 
			
		||||
    {
 | 
			
		||||
        if (col.tag == "grappleSurface")
 | 
			
		||||
        {
 | 
			
		||||
    void OnTriggerExit2D(Collider2D col) {
 | 
			
		||||
        if (col.tag == "grappleSurface") {
 | 
			
		||||
            grappleSurface = null;
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "Trumpet")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "Trumpet") {
 | 
			
		||||
            this.playerController.in_range = false;
 | 
			
		||||
            this.playerController.enemy = null;
 | 
			
		||||
        }
 | 
			
		||||
        else if (col.tag == "water")
 | 
			
		||||
        {
 | 
			
		||||
        else if (col.tag == "water") {
 | 
			
		||||
            isInWater = false;
 | 
			
		||||
            isDash = false;
 | 
			
		||||
            hasBounced = false;
 | 
			
		||||
@@ -370,26 +321,20 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnCollisionEnter2D(Collision2D collision)
 | 
			
		||||
    {
 | 
			
		||||
        if (collision.gameObject.tag == "Enemy" || collision.gameObject.tag == "ProjectileEnemy")
 | 
			
		||||
        {
 | 
			
		||||
            if (collision.transform.position.y < transform.position.y)
 | 
			
		||||
            {
 | 
			
		||||
    void OnCollisionEnter2D(Collision2D collision) {
 | 
			
		||||
        if (collision.gameObject.tag == "Enemy" || collision.gameObject.tag == "ProjectileEnemy") {
 | 
			
		||||
            if (collision.transform.position.y < transform.position.y) {
 | 
			
		||||
                _rb.AddForce(Vector2.up * 8, ForceMode2D.Impulse);
 | 
			
		||||
                collision.gameObject.GetComponent<EnemyPatrol>().DefeatEnemy();
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
            else {
 | 
			
		||||
                StartCoroutine(DestroyPlayer());
 | 
			
		||||
                print("enemy defeated player");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else if (collision.gameObject.tag == "Projectile")
 | 
			
		||||
        {
 | 
			
		||||
        else if (collision.gameObject.tag == "Projectile") {
 | 
			
		||||
            Destroy(collision.gameObject);
 | 
			
		||||
            if (this.cymbalActiveTime > 0)
 | 
			
		||||
            {
 | 
			
		||||
            if (this.cymbalActiveTime > 0) {
 | 
			
		||||
                Vector2 projVel = collision.gameObject.GetComponent<Rigidbody2D>().velocity;
 | 
			
		||||
                collision.gameObject.GetComponent<Rigidbody2D>().velocity =
 | 
			
		||||
                  new Vector2(
 | 
			
		||||
@@ -397,30 +342,24 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
                      -projVel.y
 | 
			
		||||
                    );
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
            else {
 | 
			
		||||
                StartCoroutine(DestroyPlayer());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //stupid stuff for claude's house
 | 
			
		||||
        else if (collision.gameObject.tag == "SirJacques")
 | 
			
		||||
        {
 | 
			
		||||
        else if (collision.gameObject.tag == "SirJacques") {
 | 
			
		||||
            Destroy(collision.gameObject);
 | 
			
		||||
        }
 | 
			
		||||
        else if (collision.gameObject.tag == "Door")
 | 
			
		||||
        {
 | 
			
		||||
        else if (collision.gameObject.tag == "Door") {
 | 
			
		||||
            StateController.Instance.RespawnPlayer();
 | 
			
		||||
        }
 | 
			
		||||
        else if (collision.gameObject.tag == "bouncy")
 | 
			
		||||
        {
 | 
			
		||||
        else if (collision.gameObject.tag == "bouncy") {
 | 
			
		||||
            Bounce();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    IEnumerator DestroyPlayer()
 | 
			
		||||
    {
 | 
			
		||||
        if (playerIsAlive)
 | 
			
		||||
        {
 | 
			
		||||
    IEnumerator DestroyPlayer() {
 | 
			
		||||
        if (playerIsAlive) {
 | 
			
		||||
            print("destroyPlayer called");
 | 
			
		||||
            playerIsAlive = false;
 | 
			
		||||
            audioSource.clip = deathSound;
 | 
			
		||||
@@ -435,15 +374,13 @@ public class PlayerBehavior : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
            // this.stateController.SetDeathCanvasActive(true);
 | 
			
		||||
 | 
			
		||||
            if (grapplingRope.isGrappling)
 | 
			
		||||
            {
 | 
			
		||||
            if (grapplingRope.isGrappling) {
 | 
			
		||||
                LetGoOfGrapple();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // destroy all tambourines
 | 
			
		||||
            GameObject[] currentTambourines = GameObject.FindGameObjectsWithTag("tambourine");
 | 
			
		||||
            foreach (GameObject tambourine in currentTambourines)
 | 
			
		||||
            {
 | 
			
		||||
            foreach (GameObject tambourine in currentTambourines) {
 | 
			
		||||
                tambourine.GetComponent<TambourineBehavior>().DestroySelf();
 | 
			
		||||
                // Destroy(tambourine);
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -68,8 +68,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
    [HideInInspector] private GameUIController gameUI;
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    private void Awake()
 | 
			
		||||
    {
 | 
			
		||||
    private void Awake() {
 | 
			
		||||
        RB = GetComponent<Rigidbody2D>();
 | 
			
		||||
        playerBehavior = this.gameObject.GetComponent<PlayerBehavior>();
 | 
			
		||||
        grapplingRope = playerBehavior.grapplingRope;
 | 
			
		||||
@@ -80,35 +79,28 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        trumpetAnimationObject.SetActive(false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void Start()
 | 
			
		||||
    {
 | 
			
		||||
    private void Start() {
 | 
			
		||||
        SetGravityScale(Data.gravityScale);
 | 
			
		||||
        IsFacingRight = true;
 | 
			
		||||
        tempFallSpeed = Data.maxFallSpeed;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnMove(InputValue value)
 | 
			
		||||
    {
 | 
			
		||||
        if (playerBehavior.playerIsAlive)
 | 
			
		||||
        {
 | 
			
		||||
    void OnMove(InputValue value) {
 | 
			
		||||
        if (playerBehavior.playerIsAlive) {
 | 
			
		||||
            this._moveInput = value.Get<Vector2>();
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
        else {
 | 
			
		||||
            this._moveInput = Vector2.zero;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void OnJump()
 | 
			
		||||
    {
 | 
			
		||||
        if (playerBehavior.playerIsAlive)
 | 
			
		||||
        {
 | 
			
		||||
    void OnJump() {
 | 
			
		||||
        if (playerBehavior.playerIsAlive) {
 | 
			
		||||
            OnJumpInput();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void Update()
 | 
			
		||||
    {
 | 
			
		||||
    private void Update() {
 | 
			
		||||
        unlockedTrumpet = StateController.Instance.HasTrumpet();
 | 
			
		||||
        #region TIMERS
 | 
			
		||||
        LastOnGroundTime -= Time.deltaTime;
 | 
			
		||||
@@ -117,36 +109,29 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region COLLISION CHECKS
 | 
			
		||||
        if (!IsJumping)
 | 
			
		||||
        {
 | 
			
		||||
        if (!IsJumping) {
 | 
			
		||||
            //Ground Check
 | 
			
		||||
            if (IsGrounded()) //checks if set box overlaps with ground
 | 
			
		||||
            {
 | 
			
		||||
            if (IsGrounded()) {
 | 
			
		||||
                //checks if set box overlaps with ground
 | 
			
		||||
                LastOnGroundTime = Data.coyoteTime; //if so sets the lastGrounded to coyoteTime
 | 
			
		||||
                if (unlockedTrumpet)
 | 
			
		||||
                {
 | 
			
		||||
                if (unlockedTrumpet) {
 | 
			
		||||
                    trumpet = 1;
 | 
			
		||||
                    gameUI.ToggleTrumpet(true);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                else {
 | 
			
		||||
                    trumpet = -1;
 | 
			
		||||
                }
 | 
			
		||||
                wasGrappling = false;
 | 
			
		||||
                isRegFalling = false;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
            else {
 | 
			
		||||
                // print("not jumping");
 | 
			
		||||
                if (!_isJumpFalling && !isRegFalling)
 | 
			
		||||
                {
 | 
			
		||||
                    if (unlockedTrumpet)
 | 
			
		||||
                    {
 | 
			
		||||
                if (!_isJumpFalling && !isRegFalling) {
 | 
			
		||||
                    if (unlockedTrumpet) {
 | 
			
		||||
                        trumpet = 1;
 | 
			
		||||
                        gameUI.ToggleTrumpet(true);
 | 
			
		||||
                    }
 | 
			
		||||
                    else
 | 
			
		||||
                    {
 | 
			
		||||
                    else {
 | 
			
		||||
                        trumpet = -1;
 | 
			
		||||
                    }
 | 
			
		||||
                    isRegFalling = true;
 | 
			
		||||
@@ -156,15 +141,13 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region JUMP CHECKS
 | 
			
		||||
        if (IsJumping && RB.velocity.y <= 0)
 | 
			
		||||
        {
 | 
			
		||||
        if (IsJumping && RB.velocity.y <= 0) {
 | 
			
		||||
            IsJumping = false;
 | 
			
		||||
            // print("isJumping " + IsJumping);
 | 
			
		||||
            _isJumpFalling = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (LastOnGroundTime > 0 && !IsJumping)
 | 
			
		||||
        {
 | 
			
		||||
        if (LastOnGroundTime > 0 && !IsJumping) {
 | 
			
		||||
            _isJumpCut = false;
 | 
			
		||||
 | 
			
		||||
            if (!IsJumping)
 | 
			
		||||
@@ -173,8 +156,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //Jump
 | 
			
		||||
        if (CanJump() && LastPressedJumpTime > 0)
 | 
			
		||||
        {
 | 
			
		||||
        if (CanJump() && LastPressedJumpTime > 0) {
 | 
			
		||||
            IsJumping = true;
 | 
			
		||||
            _isJumpCut = false;
 | 
			
		||||
            _isJumpFalling = false;
 | 
			
		||||
@@ -185,29 +167,25 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
            Jump();
 | 
			
		||||
 | 
			
		||||
            // determine if trumpet jump
 | 
			
		||||
            if (!IsGrounded() && in_range && trumpet > 0 && !inCoyoteTime)
 | 
			
		||||
            {
 | 
			
		||||
            if (!IsGrounded() && in_range && trumpet > 0 && !inCoyoteTime) {
 | 
			
		||||
                StartCoroutine(ActivateTrumpetSprite());
 | 
			
		||||
                gameObject.transform.Find("Trumpet").GetComponent<AudioSource>().Play();
 | 
			
		||||
                enemy.GetComponent<EnemyPatrol>().DefeatEnemy();
 | 
			
		||||
                enemy = null;
 | 
			
		||||
                in_range = false;
 | 
			
		||||
            }
 | 
			
		||||
            else if (!IsGrounded() && !in_range && trumpet > 0 && !inCoyoteTime)
 | 
			
		||||
            {
 | 
			
		||||
            else if (!IsGrounded() && !in_range && trumpet > 0 && !inCoyoteTime) {
 | 
			
		||||
                trumpet -= 1;
 | 
			
		||||
            }
 | 
			
		||||
            // check if double jump, play sound
 | 
			
		||||
            if (trumpet == 0)
 | 
			
		||||
            {
 | 
			
		||||
            if (trumpet == 0) {
 | 
			
		||||
                StartCoroutine(ActivateTrumpetSprite());
 | 
			
		||||
                gameObject.transform.Find("Trumpet").GetComponent<AudioSource>().Play();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // stop sound if needed
 | 
			
		||||
        if (soundPlaying && (isRegFalling || IsJumping || _isJumpFalling))
 | 
			
		||||
        {
 | 
			
		||||
        if (soundPlaying && (isRegFalling || IsJumping || _isJumpFalling)) {
 | 
			
		||||
            print("footsteps stop");
 | 
			
		||||
            audioSource.Stop();
 | 
			
		||||
            soundPlaying = false;
 | 
			
		||||
@@ -216,8 +194,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
        #region GRAPPLE CHECKS
 | 
			
		||||
        // set wasGrappling to true if the player starts grappling
 | 
			
		||||
        if (grapplingRope.isGrappling)
 | 
			
		||||
        {
 | 
			
		||||
        if (grapplingRope.isGrappling) {
 | 
			
		||||
            wasGrappling = true;
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
@@ -228,49 +205,41 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        // {
 | 
			
		||||
        //     SetGravityScale(0);
 | 
			
		||||
        // }
 | 
			
		||||
        if (RB.velocity.y < 0 && _moveInput.y < 0)
 | 
			
		||||
        {
 | 
			
		||||
        if (RB.velocity.y < 0 && _moveInput.y < 0) {
 | 
			
		||||
            //Much higher gravity if holding down
 | 
			
		||||
            SetGravityScale(Data.gravityScale * Data.fastFallGravityMult);
 | 
			
		||||
            //Caps maximum fall speed, so when falling over large distances we don't accelerate to insanely high speeds
 | 
			
		||||
            RB.velocity = new Vector2(RB.velocity.x, Mathf.Max(RB.velocity.y, -Data.maxFastFallSpeed));
 | 
			
		||||
        }
 | 
			
		||||
        else if (_isJumpCut)
 | 
			
		||||
        {
 | 
			
		||||
        else if (_isJumpCut) {
 | 
			
		||||
            //Higher gravity if jump button released
 | 
			
		||||
            SetGravityScale(Data.gravityScale * Data.jumpCutGravityMult);
 | 
			
		||||
            RB.velocity = new Vector2(RB.velocity.x, Mathf.Max(RB.velocity.y, -Data.maxFallSpeed));
 | 
			
		||||
        }
 | 
			
		||||
        else if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
 | 
			
		||||
        {
 | 
			
		||||
        else if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold) {
 | 
			
		||||
            SetGravityScale(Data.gravityScale * Data.jumpHangGravityMult);
 | 
			
		||||
        }
 | 
			
		||||
        else if (RB.velocity.y < 0)
 | 
			
		||||
        {
 | 
			
		||||
        else if (RB.velocity.y < 0) {
 | 
			
		||||
            //Higher gravity if falling
 | 
			
		||||
            SetGravityScale(Data.gravityScale * Data.fallGravityMult);
 | 
			
		||||
            //Caps maximum fall speed, so when falling over large distances we don't accelerate to insanely high speeds
 | 
			
		||||
            RB.velocity = new Vector2(RB.velocity.x, Mathf.Max(RB.velocity.y, -Data.maxFallSpeed));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
        else {
 | 
			
		||||
            //Default gravity if standing on a platform or moving upwards
 | 
			
		||||
            SetGravityScale(Data.gravityScale);
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region SOUND CHECKS
 | 
			
		||||
        if (!IsJumping && !_isJumpFalling && !isRegFalling && _moveInput.x != 0)
 | 
			
		||||
        {
 | 
			
		||||
            if (!soundPlaying)
 | 
			
		||||
            {
 | 
			
		||||
        if (!IsJumping && !_isJumpFalling && !isRegFalling && _moveInput.x != 0) {
 | 
			
		||||
            if (!soundPlaying) {
 | 
			
		||||
                // print("footsteps PLAY");
 | 
			
		||||
                audioSource.Play();
 | 
			
		||||
                soundPlaying = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else if (soundPlaying && audioSource.clip.name == "footsteps")
 | 
			
		||||
        {
 | 
			
		||||
        else if (soundPlaying && audioSource.clip.name == "footsteps") {
 | 
			
		||||
            // print("footsteps stop");
 | 
			
		||||
            audioSource.Stop();
 | 
			
		||||
            soundPlaying = false;
 | 
			
		||||
@@ -278,43 +247,38 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region UPDATE UI
 | 
			
		||||
        if (trumpet == 0)
 | 
			
		||||
        {
 | 
			
		||||
        if (trumpet == 0) {
 | 
			
		||||
            gameUI.ToggleTrumpet(false);
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void FixedUpdate()
 | 
			
		||||
    {
 | 
			
		||||
    private void FixedUpdate() {
 | 
			
		||||
        Run(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #region INPUT CALLBACKS
 | 
			
		||||
    //Methods which whandle input detected in Update()
 | 
			
		||||
    public void OnJumpInput()
 | 
			
		||||
    {
 | 
			
		||||
    public void OnJumpInput() {
 | 
			
		||||
        LastPressedJumpTime = Data.jumpInputBufferTime;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void OnJumpUpInput()
 | 
			
		||||
    {
 | 
			
		||||
        if (CanJumpCut())
 | 
			
		||||
    public void OnJumpUpInput() {
 | 
			
		||||
        if (CanJumpCut()) {
 | 
			
		||||
            _isJumpCut = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region GENERAL METHODS
 | 
			
		||||
    public void SetGravityScale(float scale)
 | 
			
		||||
    {
 | 
			
		||||
    public void SetGravityScale(float scale) {
 | 
			
		||||
        RB.gravityScale = scale;
 | 
			
		||||
    }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    //MOVEMENT METHODS
 | 
			
		||||
    #region RUN METHODS
 | 
			
		||||
    private void Run(float lerpAmount)
 | 
			
		||||
    {
 | 
			
		||||
    private void Run(float lerpAmount) {
 | 
			
		||||
        //Calculate the direction we want to move in and our desired velocity
 | 
			
		||||
        float targetSpeed = _moveInput.x * Data.runMaxSpeed;
 | 
			
		||||
        //We can reduce are control using Lerp() this smooths changes to are direction and speed
 | 
			
		||||
@@ -325,24 +289,20 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
        //Gets an acceleration value based on if we are accelerating (includes turning) 
 | 
			
		||||
        //or trying to decelerate (stop). As well as applying a multiplier if we're air borne.
 | 
			
		||||
        if (LastOnGroundTime > 0)
 | 
			
		||||
        {
 | 
			
		||||
        if (LastOnGroundTime > 0) {
 | 
			
		||||
            accelRate = (Mathf.Abs(targetSpeed) > 0.01f) ? Data.runAccelAmount : Data.runDeccelAmount;
 | 
			
		||||
        }
 | 
			
		||||
        else if (wasGrappling)
 | 
			
		||||
        {
 | 
			
		||||
        else if (wasGrappling) {
 | 
			
		||||
            accelRate = (Mathf.Abs(targetSpeed) > 0.01f) ? Data.runAccelAmount * Data.accelInAir : Data.runDeccelAmount * (Data.deccelInAir / 5);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
        else {
 | 
			
		||||
            accelRate = (Mathf.Abs(targetSpeed) > 0.01f) ? Data.runAccelAmount * Data.accelInAir : Data.runDeccelAmount * Data.deccelInAir;
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Add Bonus Jump Apex Acceleration
 | 
			
		||||
        //Increase are acceleration and maxSpeed when at the apex of their jump, makes the jump feel a bit more bouncy, responsive and natural
 | 
			
		||||
        if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold)
 | 
			
		||||
        {
 | 
			
		||||
        if ((IsJumping || _isJumpFalling) && Mathf.Abs(RB.velocity.y) < Data.jumpHangTimeThreshold) {
 | 
			
		||||
            accelRate *= Data.jumpHangAccelerationMult;
 | 
			
		||||
            targetSpeed *= Data.jumpHangMaxSpeedMult;
 | 
			
		||||
        }
 | 
			
		||||
@@ -350,8 +310,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
        #region Conserve Momentum
 | 
			
		||||
        //We won't slow the player down if they are moving in their desired direction but at a greater speed than their maxSpeed
 | 
			
		||||
        if ((Data.doConserveMomentum && Mathf.Abs(RB.velocity.x) > Mathf.Abs(targetSpeed) && Mathf.Sign(RB.velocity.x) == Mathf.Sign(targetSpeed) && Mathf.Abs(targetSpeed) > 0.01f && LastOnGroundTime < 0) || grapplingRope.isGrappling)
 | 
			
		||||
        {
 | 
			
		||||
        if ((Data.doConserveMomentum && Mathf.Abs(RB.velocity.x) > Mathf.Abs(targetSpeed) && Mathf.Sign(RB.velocity.x) == Mathf.Sign(targetSpeed) && Mathf.Abs(targetSpeed) > 0.01f && LastOnGroundTime < 0) || grapplingRope.isGrappling) {
 | 
			
		||||
            //Prevent any deceleration from happening, or in other words conserve are current momentum
 | 
			
		||||
            //You could experiment with allowing for the player to slightly increae their speed whilst in this "state"
 | 
			
		||||
            accelRate = 0;
 | 
			
		||||
@@ -374,8 +333,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
         */
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void Turn()
 | 
			
		||||
    {
 | 
			
		||||
    private void Turn() {
 | 
			
		||||
        //stores scale and flips the player along the x axis, 
 | 
			
		||||
        Vector3 scale = transform.localScale;
 | 
			
		||||
        scale.x *= -1;
 | 
			
		||||
@@ -386,8 +344,7 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region JUMP METHODS
 | 
			
		||||
    private void Jump()
 | 
			
		||||
    {
 | 
			
		||||
    private void Jump() {
 | 
			
		||||
        //Ensures we can't call Jump multiple times from one press
 | 
			
		||||
        LastPressedJumpTime = 0;
 | 
			
		||||
        LastOnGroundTime = 0;
 | 
			
		||||
@@ -397,9 +354,9 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
        //This means we'll always feel like we jump the same amount 
 | 
			
		||||
        //(setting the player's Y velocity to 0 beforehand will likely work the same, but I find this more elegant :D)
 | 
			
		||||
        float force = Data.jumpForce;
 | 
			
		||||
        if (RB.velocity.y < 0)
 | 
			
		||||
        if (RB.velocity.y < 0) {
 | 
			
		||||
            force -= RB.velocity.y;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        RB.AddForce(Vector2.up * force, ForceMode2D.Impulse);
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
@@ -407,41 +364,34 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    #region CHECK METHODS
 | 
			
		||||
    private bool CanJump()
 | 
			
		||||
    {
 | 
			
		||||
        if (!IsGrounded() && trumpet > 0)
 | 
			
		||||
        {
 | 
			
		||||
    private bool CanJump() {
 | 
			
		||||
        if (!IsGrounded() && trumpet > 0) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return LastOnGroundTime > 0 && !IsJumping;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private bool CanJumpCut()
 | 
			
		||||
    {
 | 
			
		||||
    private bool CanJumpCut() {
 | 
			
		||||
        return IsJumping && RB.velocity.y > 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public bool IsGrounded()
 | 
			
		||||
    {
 | 
			
		||||
    public bool IsGrounded() {
 | 
			
		||||
        // print(Physics2D.OverlapBox(this.transform.position, _groundCheckSize, 0, _groundLayer) && !IsJumping);
 | 
			
		||||
        return (Physics2D.OverlapBox(new Vector2(this.transform.position.x, this.transform.position.y - _groundCheckOffset), _groundCheckSize, 0, _groundLayer) && !IsJumping);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void FloatGravity(float grav)
 | 
			
		||||
    {
 | 
			
		||||
    public void FloatGravity(float grav) {
 | 
			
		||||
        Data.maxFallSpeed = grav;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void EndFloatGravity()
 | 
			
		||||
    {
 | 
			
		||||
    public void EndFloatGravity() {
 | 
			
		||||
        Data.maxFallSpeed = tempFallSpeed;
 | 
			
		||||
    }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    #region EDITOR METHODS
 | 
			
		||||
    private void OnDrawGizmosSelected()
 | 
			
		||||
    {
 | 
			
		||||
    private void OnDrawGizmosSelected() {
 | 
			
		||||
        Gizmos.color = Color.green;
 | 
			
		||||
        Gizmos.DrawWireCube(new Vector2(this.transform.position.x, this.transform.position.y - _groundCheckOffset), _groundCheckSize);
 | 
			
		||||
        Gizmos.color = Color.blue;
 | 
			
		||||
@@ -451,10 +401,8 @@ public class PlayerMovement : MonoBehaviour
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region ADDITIONAL TRUMPET METHODS
 | 
			
		||||
    IEnumerator ActivateTrumpetSprite()
 | 
			
		||||
    {
 | 
			
		||||
        if (!trumpetActive)
 | 
			
		||||
        {
 | 
			
		||||
    IEnumerator ActivateTrumpetSprite() {
 | 
			
		||||
        if (!trumpetActive) {
 | 
			
		||||
            trumpetActive = true;
 | 
			
		||||
            trumpetSprite.enabled = true;
 | 
			
		||||
            trumpetAnimationObject.SetActive(true);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user