A downloadable game for Windows

walk

Download

Download
L.E.S. 2.0 update.zip 23 MB

Comments

Log in with itch.io to leave a comment.

(1 edit)

Пик геймплея... но если серьезно что бы я поменял бы:
добавил бы какую нибудь цель игроку (ходилки бродилки это конечно хорошо, но тут типо скучно и делать нечего)
отключил бы коллизию некоторым объектам по типу травы (мешает сильно гулять по этой локации, отключай компоненты типа Collider, можно еще в MeshRenderer отключить мелким объектам тени чтоб лишний раз комп не грузить)
Так же игрока сильно дергает при игре, тут наверно виноват кривой контроллер игрока или настройки физики, хотя я вижу что скрипты игрока не твои.
Про музыку или звуковое наполнение я щас ничего не скажу, наушников на данный момент нету.

Как первое творчество на Unity - нормально. Но если оценивать объективно как человек который шарит за Unity и как обычный игрок - максимум 3/10, у игрока нету цели, локация маленькая и изучать ее не интерестно. Если у тебя вновь появится желание сделать что то на Unity обращайся, помогу чем смогу!
Еще я дополнительно добавлю код для управления вкладками главного меню, ну как маленький презент, а то не сделать главное меню в Unity игре это плохо.
Вот код:
using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;

public class MainMenuController : MonoBehaviour

{

    [System.Serializable]

    public class Page

    {

        public GameObject PageObject;

        public List<Button> ButtonsForThisPage;

        [HideInInspector] public CanvasGroup PageCanvasGroup;

        [HideInInspector] public Animator PageAnimator;

    }

    public int StartCurrentPageID = 0;

    public List<Page> MenuNavigation = new List<Page>();

    public bool StartScreenFadeOnStart = true;

    public bool HideMenuWhileInactive = true;

    public CanvasGroup MainCanvasGroup;

    public float maxInactiveTime = 8f;

    private float inactiveTimeCounter;

    private Page currentPage;

    private Coroutine throttleCoroutine;

    private void Awake() => Initialize();

    private void Initialize()

    {

        if (MenuNavigation == null || MenuNavigation.Count == 0 || StartCurrentPageID >= MenuNavigation.Count)

        {

            Debug.LogError("[MainMenuController] Список страниц пуст или StartCurrentPageID настроен неверно!");

            return;

        }

        currentPage = MenuNavigation[StartCurrentPageID];

        for (int i = 0; i < MenuNavigation.Count; i++)

        {

            var page = MenuNavigation[i];

            if (page.PageObject == null) continue;

            page.PageCanvasGroup = page.PageObject.GetComponent<CanvasGroup>();

            page.PageAnimator = page.PageObject.GetComponent<Animator>();

            if (!page.PageObject.activeSelf) 

                page.PageObject.SetActive(true);

            var targetPage = page; 

            foreach (Button btn in page.ButtonsForThisPage)

            {

                if (btn != null)

                {

                    btn.onClick.AddListener(() => SwitchPage(targetPage));

                }

            }

            if (page.PageObject != currentPage.PageObject)

            {

                PageAnimation(page, false);

            }

            else

            {

                PageAnimation(page, true);

            }

        }

    }

    private void Update()

    {

        if (!HideMenuWhileInactive) return;

        if (Input.anyKey || Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") != 0)

        {

            inactiveTimeCounter = 0f;

        }

        else

        {

            inactiveTimeCounter += Time.deltaTime;

        }

        if (inactiveTimeCounter >= maxInactiveTime || !Application.isFocused)

        {

            MainCanvasGroup.alpha = Mathf.Lerp(MainCanvasGroup.alpha, 0f, Time.deltaTime * 10f);

            MainCanvasGroup.blocksRaycasts = false;

        }

        else

        {

            MainCanvasGroup.alpha = Mathf.Lerp(MainCanvasGroup.alpha, 1f, Time.deltaTime * 10f);

            MainCanvasGroup.blocksRaycasts = true;

        }

    }

    private void SwitchPage(Page newPage)

    {

        if (throttleCoroutine != null || newPage == currentPage) return;

        PageAnimation(currentPage, false);

        PageAnimation(newPage, true);

        

        throttleCoroutine = StartCoroutine(ThrottleTransition(currentPage, newPage));

        currentPage = newPage;

    }

    private void PageAnimation(Page page, bool enteringAnimation)

    {

        if (page.PageAnimator != null)

        {

            page.PageAnimator.SetTrigger(enteringAnimation ? "In" : "Out");

            page.PageAnimator.ResetTrigger(!enteringAnimation ? "In" : "Out");

        }

        if (page.PageCanvasGroup != null)

        {

            page.PageCanvasGroup.blocksRaycasts = enteringAnimation;

            page.PageCanvasGroup.alpha = enteringAnimation ? 1f : 0f;

        }

    }

    private IEnumerator ThrottleTransition(Page page1, Page page2)

    {

        float page1Length = GetAnimationClipLength(page1);

        float page2Length = GetAnimationClipLength(page2);

        float waitTime = Mathf.Max(page1Length, page2Length, 0.1f);

        yield return new WaitForSeconds(waitTime);

        throttleCoroutine = null;

    }

    private float GetAnimationClipLength(Page page)

    {

        if (page.PageAnimator == null) return 0f;

        

        var clipInfo = page.PageAnimator.GetCurrentAnimatorClipInfo(0);

        if (clipInfo != null && clipInfo.Length > 0)

        {

            return clipInfo.clip.length;

        }

        return 0f;

    }

    public void QuitGame()

    {

        Invoke(nameof(CloseGame), 0.35f);

    }

    private void CloseGame()

    {

        Debug.Log("Game closed");

        Application.Quit();

    }

}

если что Chat GPT в помощь чтоб разобратся в моей писанине

Чувак, как ты эот откопал??? Короче W Завозик, если захочу чет сделать с игрой напишу в дс. Связь брат🤙