void Update() { mRigidBody.isKinematic = true; if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } ResetBoolean(); if (!mAppearing) { if (!mGetHit && !mDying && mFloorIndex == mTarget.gameObject.GetComponent <Player> ().GetLayerIndex()) { if (attackTimer > attackTimeWait && Vector2.Distance(transform.position, mTarget.position) < mAttackDistance && mTarget.position.y < (transform.position.y + 1) && mTarget.position.y > (transform.position.y - 1)) { attackTimer = 0; Throw(); } else if (Vector2.Distance(transform.position, mTarget.position) < mFollowRange) { if (mTarget.position.x >= transform.position.x) { FaceDirection(Vector2.right); } else { FaceDirection(Vector2.left); } if (mTarget.position.y > (transform.position.y + 1)) { MovingUp(); } else if (mTarget.position.y < (transform.position.y - 1)) { MovingDown(); } } } attackTimer += Time.deltaTime; if (mStats.isDead() && !mDying) { Die(); } if (mDying) { dyingTimer += Time.deltaTime; if (dyingTimer >= 1.5f) { Destroy(gameObject); } } if (mGetHit) { mInvincibleTimer += Time.deltaTime; if (mInvincibleTimer >= kInvincibilityDuration) { mGetHit = false; mInvincibleTimer = 0.0f; } } audioTimer += Time.deltaTime; } else { appearingTimer += Time.deltaTime; if (appearingTimer >= 1.0f) { mAppearing = false; appearingTimer = 0.0f; } } UpdateAnimator(); }
void Update() { if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } ResetBoolean(); if (staggerTimer > 0f) { staggerTimer -= 0.6f; } if (attackTimer > attackTimeWait && !mGetHit && staggerTimer <= 0 && !mDying && mFloorIndex == mTarget.gameObject.GetComponent <Player> ().GetLayerIndex()) { if (Vector2.Distance(transform.position, mTarget.position) <= (mAttackDistance + 0.05)) { attackTimer = 0; knifeHit.Play(); Hit(); } else if (Vector2.Distance(transform.position, mTarget.position) <= mFollowRange && Vector2.Distance(transform.position, mTarget.position) > mAttackDistance) { if (transform.position.x < mTarget.position.x) { MovingRight(); } else if (transform.position.x > mTarget.position.x) { MovingLeft(); } if (transform.position.y < mTarget.position.y) { MovingUp(); } else if (transform.position.y > mTarget.position.y) { MovingDown(); } } } attackTimer += Time.deltaTime; if (mStats.isDead() && !mDying) { Die(); } UpdateAnimator(); if (mDying) { dyingTimer += Time.deltaTime; if (dyingTimer >= 1.0f) { Destroy(gameObject); } } if (mGetHit) { mInvincibleTimer += Time.deltaTime; if (mInvincibleTimer >= kInvincibilityDuration) { mGetHit = false; mInvincibleTimer = 0.0f; } } if (mHitting) { hittingTimer += Time.deltaTime; if (hittingTimer >= 0.5f) { hittingTimer = 0.0f; mHitting = false; } } audioTimer += Time.deltaTime; }
/// <summary> /// Main flow of the player /// </summary> void FixedUpdate() { Debug.Log(mStats.Level); if (!dead && mHealthBarRef.GetHealth() <= 0) { Die(); } if (mDying) { dyingTimer += Time.deltaTime; if (dyingTimer >= 1.45f) { mDying = false; dyingTimer = 0f; } } if (mNormalAttack >= 0 && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { mNormalAttack = -1; mHitting = false; } if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } if (mInflate) { mInflated = true; canMove = false; inflateTimer += Time.deltaTime; if (inflateTimer >= maxInflateTimer) { if (transform.position.x > (target + 0.1f)) { if (!deflating.isPlaying) { deflating.Play(); } float distCovered = (Time.time - startTime) * 0.5f; float fracJourney = distCovered / journeyLength; transform.position = Vector3.Lerp(transform.position, new Vector3(target, transform.position.y, transform.position.z), fracJourney); } else { deflating.Stop(); mInflate = false; mInflated = false; inflateTimer = 0.0f; } } } //Teleport back up if (transform.position.y <= mGroundY && mJumping) { mRigidBody.useGravity = false; mRigidBody.velocity = new Vector3(0, 0, 0); transform.position = new Vector3(transform.position.x, mGroundY, transform.position.z); mJumping = false; } //get out of jumping?! / slide / Dash / Handle dash recovery if (mJumping && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Idle") && Mathf.Approximately(transform.position.y, mGroundY)) { mJumping = false; } else if (mSliding && !mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Sliding")) { mSliding = false; } else if (mDashing && dashTime > 35) { mDashing = false; dashRecovery = 0; } if (dashRecovery < 10 && !mDashing) { dashRecovery++; } //Instruction priority if (inStory) { ResetBoolean(); if (moveRight) { MovingRight(); } else if (moveUp) { MovingUp(); } if (canWalk) { if (Input.GetButton("Left") || Input.GetKey(KeyCode.A)) { WalkLeft(); } else if (Input.GetButton("Right") || Input.GetKey(KeyCode.D)) { WalkRight(); } if (Input.GetButton("Up") || Input.GetKey(KeyCode.W)) { WalkUp(); } else if (Input.GetButton("Down") || Input.GetKey(KeyCode.S)) { WalkDown(); } } transform.localPosition = new Vector3( Mathf.Clamp(transform.localPosition.x, mFloorBoundary [Floor.X_MIN_INDEX], mFloorBoundary [Floor.X_MAX_INDEX]), Mathf.Clamp(transform.localPosition.y, mFloorBoundary [Floor.Y_MIN_INDEX], mFloorBoundary [Floor.Y_MAX_INDEX]), transform.localPosition.z ); mGroundY = transform.position.y; } else if (mDashing) { ResetBoolean(); DashHandler(); } else if (mJumping) { ResetBoolean(); //Jump attack MovementHandler(); } else { transform.position = new Vector3(transform.position.x, transform.position.y, -1f); transform.rotation = Quaternion.Euler(0f, 0f, 0f); if (!ActionHandler()) { if (CanMove()) { bool isJumping = mJumping; ResetBoolean(); MovementHandler(); JumpHandler(); } } } if (mRunning) { timerForSlide++; } else { timerForSlide = 0; } mShadow.transform.position = new Vector3(transform.position.x, (mGroundY - mSpriteRenderer.bounds.size.y / 2), transform.position.z); CheckFalling(); // if one is not jumping or falling, then they must be on the floor, meaning they must abide by the boundaries. if (!mJumping && !mFalling) { transform.position = new Vector3(Mathf.Clamp(transform.position.x, mFloorBoundary [Floor.X_MIN_INDEX], mFloorBoundary [Floor.X_MAX_INDEX]), Mathf.Clamp(transform.position.y, mFloorBoundary [Floor.Y_MIN_INDEX], mFloorBoundary [Floor.Y_MAX_INDEX]), transform.position.z); } UpdateOrderInLayer(); if (mGetHit) { mInvincibleTimer += Time.deltaTime; if (mInvincibleTimer >= kInvincibilityDuration) { mGetHit = false; mInvincibleTimer = 0.0f; } } if (mGetKnockdown) { mInvincibleTimer += Time.deltaTime; if (mInvincibleTimer >= kKnockdownInvincibilityDuration) { mGetKnockdown = false; mInvincibleTimer = 0.0f; } } hitTimer += Time.deltaTime; UpdateAnimator(); }
void Update() { if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } ResetBoolean(); if (mExplode) { destroyTimer += Time.deltaTime; if (destroyTimer >= 0.3f) { Destroy(gameObject); } } if (transform.position.x >= 50) { Destroy(gameObject); } if (canMove) { if (Life <= 0) { mDead = true; } else { if (transform.position.y - 0.1f <= mFloorBoundary [Floor.Y_MIN_INDEX]) { moveUp = true; moveDown = false; } else if (transform.position.y + 0.1f >= mFloorBoundary [Floor.Y_MAX_INDEX]) { moveUp = false; moveDown = true; } if (moveDown) { MovingDown(); } else if (moveUp) { MovingUp(); } if (mTarget.position.x >= transform.position.x) { FaceDirection(Vector2.right); } else { FaceDirection(Vector2.left); } } } else { MovingUp(); } UpdateAnimator(); audioTimer += Time.deltaTime; }
void Update() { if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } ResetBoolean(); if (mHit) { hitTimer += Time.deltaTime; if (hitTimer >= 1.0f) { hitTimer = 0.0f; mHit = false; } } if (inStory) { if (mPumping) { pumpingTimer += Time.deltaTime; if (pumpingTimer >= maxPumpingTimer) { pumping.Stop(); mThrowing = false; mPumping = false; pumpingTimer = 0.0f; Destroy(hoseInstance); } } } else if (canMove && !mHit) { if (mPumping) { pumpingTimer += Time.deltaTime; if (pumpingTimer >= maxPumpingTimer) { pumping.Stop(); mThrowing = false; mPumping = false; pumpingTimer = 0.0f; Destroy(hoseInstance); } } else if (transform.position.x - player.position.x < 2.0f) { if (player.position.y > transform.position.y) { moveUp = true; moveDown = false; } else if (player.position.y < transform.position.y) { moveUp = false; moveDown = true; } else { moveUp = false; moveDown = false; } if (moveDown) { MovingDown(10); } else if (moveUp) { MovingUp(10); } if (Mathf.Abs(player.position.y - transform.position.y) <= 0.5) { Pumping(); } } else { float specialAttack = Random.Range(0.0f, 100.0f); if (specialAttack > randomAttackTime) { int whichAttack = Random.Range(0, 2); if (whichAttack == 0 && !mHit && !mThrowRocks) { mThrowRocks = true; } else if (whichAttack == 1 && !mHit && finishThrowTitle) { StartCoroutine(CreateTitle()); } } if (mThrowRocks) { throwRockTimer += Time.deltaTime; originalPos = camTransform.localPosition; ShakeCamera(); if (throwRockTimer >= 2.0f) { throwRockTimer = 0.0f; mThrowRocks = false; StartCoroutine(ThrowTiles()); } } else { if (transform.position.y - 0.1f <= mFloorBoundary [Floor.Y_MIN_INDEX]) { moveUp = true; moveDown = false; } else if (transform.position.y + 0.1f >= mFloorBoundary [Floor.Y_MAX_INDEX]) { moveUp = false; moveDown = true; } if (moveDown) { MovingDown(1); } else if (moveUp) { MovingUp(1); } } } if (throwTitle) { title [nextThrow].GetComponent <Title> ().SetLaunch(); throwTitle = false; if (nextThrow == 6) { finishThrowTitle = true; } } if (invincible) { invincibleTimer += Time.deltaTime; if (invincibleTimer > maxInvincibleTimer) { invincibleTimer = 0.0f; invincible = false; } } } UpdateAnimator(); }
void Update() { if (!floorBoundaryInitialized) { // get current boundary mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); floorBoundaryInitialized = true; } ResetBoolean(); if (mNormalAttack > 0 && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { mNormalAttack = 0; mHitting = false; } if (Input.GetKeyDown("n")) { mHealthBarRef.LoseHealth(20.0f); } else if (Input.GetKeyDown("m")) { mHealthBarRef.GainHealth(15.0f); } if (Input.GetKeyDown("z")) { //if (!mAnimator.GetCurrentAnimatorStateInfo (0).IsName ("Idle")) mNormalAttack++; mHitting = true; } else if (Input.GetKey("w")) { mStrongAttack++; //mHitting = true; } if (mJumping && transform.position.y <= 0) { mJumping = false; } else if (mGetHit && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { mGetHit = false; } else if (mSliding && mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { mSliding = false; } if (mAnimator.GetCurrentAnimatorStateInfo(0).IsName("Jumping")) { mFalling = true; } else { mFalling = false; } if (!mGetHit) { if (Input.GetKey("space")) { Defend(); } else if (Input.GetKeyDown("a")) { Jump(); } else { if (Input.GetButton("Left")) { MovingLeft(); } else if (Input.GetButton("Right")) { MovingRight(); } if (Input.GetButton("Up")) { MovingUp(); } else if (Input.GetButton("Down")) { MovingDown(); // if u pass the bottom of the floor boundary if (transform.position.y < mFloorBoundary[Floor.Y_MIN_INDEX]) { int newFloorIndex = mFloorControllerRef.NextFloorDown(mFloorIndex); if (newFloorIndex != mFloorIndex) { mFloorIndex = newFloorIndex; mFloorControllerRef.GetCurrentFloorBoundary(mFloorBoundary, mFloorIndex, mSpriteRenderer); mJumping = true; mFalling = true; } } } transform.position = new Vector3(Mathf.Clamp(transform.position.x, mFloorBoundary[Floor.X_MIN_INDEX], mFloorBoundary[Floor.X_MAX_INDEX]), Mathf.Clamp(transform.position.y, mFloorBoundary[Floor.Y_MIN_INDEX], mFloorBoundary[Floor.Y_MAX_INDEX]), transform.position.z); UpdateOrderInLayer(); } } if (Input.GetKeyDown("s")) { GetHit(); } else if (Input.GetKeyDown("d")) { GetKnockdown(); } else if (mMoving && Input.GetKeyDown("f")) { Slide(); } else if (Input.GetKeyDown("q")) { Dash(); } // if one is not jumping or falling, then they must be on the floor, meaning they must abide by the boundaries. if (!mJumping && !mFalling) { transform.position = new Vector3(Mathf.Clamp(transform.position.x, mFloorBoundary[Floor.X_MIN_INDEX], mFloorBoundary[Floor.X_MAX_INDEX]), Mathf.Clamp(transform.position.y, mFloorBoundary[Floor.Y_MIN_INDEX], mFloorBoundary[Floor.Y_MAX_INDEX]), transform.position.z); } UpdateOrderInLayer(); UpdateAnimator(); }