public void Moving() { //Debug.Log(player.forward); Vector3 forward = player.forward * movement.z; //двигаемся вперед/назад относительно того куда смотрит игрок Vector3 right = player.right * movement.x; //двигаемся влево/вправо относительно того куда смотрит игрок if (!GlobalInfo.CheckWallRun()) { if (GlobalInfo.CheckGround()) { body.MovePosition(body.position + forward * speed * Time.fixedDeltaTime);//осуществялем передвижение вперед/назад } else { body.MovePosition(body.position + forward * speedMove / 2 * Time.fixedDeltaTime);//осуществялем передвижение вперед/назад } //Debug.Log("Move"); } else { jumps = 0; } if (GlobalInfo.CheckGround()) { body.MovePosition(body.position + right * speed * Time.fixedDeltaTime);//осуществялем передвижение влево/вправо } else { body.MovePosition(body.position + right * speedMove / 2 * Time.fixedDeltaTime);//осуществялем передвижение влево/вправо } }
//функция прыжка void Jump() { Vector3 vec = new Vector3(0, jumpForce, 0); if (Input.GetAxisRaw("Vertical") > 0) { vec.x = player.forward.x * speedMove / 2; vec.z = player.forward.z * speedMove / 2; } else { if (Input.GetAxisRaw("Vertical") != 0) { vec.x = -player.forward.x * speedMove / 2; vec.z = -player.forward.z * speedMove / 2; } } if (Input.GetAxisRaw("Horizontal") > 0) { vec.x = (vec.x + player.right.x * speedMove / 2) / 2; vec.z = (vec.z + player.right.z * speedMove / 2) / 2; } else { if (Input.GetAxisRaw("Horizontal") != 0) { vec.x = (vec.x + (-player.right.x * speedMove / 2)) / 2; vec.z = (vec.z + (-player.right.z * speedMove / 2)) / 2; } } if (Input.GetKeyDown(KeyCode.Space) && (GlobalInfo.CheckGround() && !GlobalInfo.CheckWallRun()))//если нажали пробел и на земле { Debug.Log("Kick"); body.velocity = vec;//пинаем вверх audio.Play("Jump"); } else { if (Input.GetKeyDown(KeyCode.Space) && jumps != nJumps && !GlobalInfo.CheckWallRun()) { body.velocity = vec;//пинаем вверх audio.Play("Jump" + jumps); jumps++; } } }