//to ray passing void isPlayerOnGround() { //to ray passing down position Debug.DrawRay(thisTrans.position, -Vector3.up * 0.15f, Color.red); if (Physics.Raycast(transform.position, -Vector3.up, out hit, 0.15f)) { //Debug.Log ("name" + hit.collider.tag); //for ray hit castle ground if (playerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Run")) { if (hit.collider.tag.Contains("ground1")) { fireEffect.SetActive(true); //to fire effect disable SmokeEffect.SetActive(false); //to smoke effect disable } //for ray hit forest ground else if (hit.collider.tag.Contains("ground2")) { fireEffect.SetActive(false); //to fire effect disable SmokeEffect.SetActive(true); //to smoke effect disable } } else { SmokeEffect.SetActive(false); //to smoke effect disable fireEffect.SetActive(false); //to fire effect disable } isPlayerOnTheGround = true; } else { isPlayerOnTheGround = false; //if player is on Air SmokeEffect.SetActive(false); //to smoke effect disable fireEffect.SetActive(false); //to fire effect disable } }
void FixedUpdate() { //isPlayerOnGround (); thisPosition = thisTrans.position; switch (presentPlayerState) { //for player in alive case playerStates.Alive: if (InputController.Static.isJump) { if (canDoubleJump) { currentJumpSpeed = jumpSpeed * 0.5f; canDoubleJump = false; playerAnimator.SetTrigger("DoubleJump"); jumpTimer = 0.0f; onAirTime = Time.timeSinceLevelLoad; } else { if (isPlayerOnTheGround) { currentJumpSpeed = jumpSpeed; canDoubleJump = true; playerAnimator.SetTrigger("Jump"); jumpTimer = 0.0f; jumpinfo.SetActive(false); SoundController.Static.playSoundFromName("JUMP"); //for jump sound onAirTime = Time.timeSinceLevelLoad; } } InputController.Static.isJump = false; } if (InputController.Static.isAttack) { attackinfo.SetActive(false); fireEffect.SetActive(false); SwordAnimator.SetTrigger("Rotate"); playerAnimator.SetTrigger("Attack"); SoundController.Static.playSoundFromName("Sword"); //for sword sound InputController.Static.isAttack = false; } moveDirection = new Vector3(speed, currentJumpSpeed, 0); controller.Move(moveDirection * Time.deltaTime); jumpSpeedFalloff = jumpCurve.Evaluate(jumpTimer); currentJumpSpeed -= jumpSpeedFalloff; jumpTimer += Time.deltaTime; isPlayerOnGround(); break; case playerStates.idle: break; //to player dead state case playerStates.dead: fireEffect.SetActive(false); SmokeEffect.SetActive(false); sword.SetActive(false); //player moving down moveDirection.y -= gravity * Time.deltaTime; moveDirection = Vector3.MoveTowards(moveDirection, Vector3.zero, 0.09f); controller.Move(moveDirection * Time.deltaTime); SoundController.Static.bgSound.volume = 0; //to bg sound //to resetting player moving speed when died if (!oneTimeReset) { oneTimeReset = true; playerAnimator.SetTrigger("Dead"); //for player dead animation Invoke("ResetMoveDirection", 0.7f); } break; } }