Тёмный
Noob Game Dev
Noob Game Dev
Noob Game Dev
Подписаться
Время от времени, балуюсь с Unity.
Я пытаюсь рассказывать о том, что изучил, делюсь своим опытом и ошибками. Иногда провожу геймджемы и различные мероприятия.
Благодарю вас за то, что интересуетесь каналом и поддерживаете меня. С удовольствием буду рад Вам помочь, либо просто пообщаться на нашем Дискорд сервере, присоединяйтесь: discord.gg/AHpWFBAJJr
Также у меня есть Телеграм канал: t.me/Noob_Game_Dev
И сайт где можно "пощупать" механики из видео: noobgamedev.xyz
Итоги 1-го Noob Game Jam'а
19:47
3 года назад
#1 - Редизайн канала
11:32
4 года назад
Ошибка #1. Внимание!
2:41
4 года назад
Комментарии
@ЗахарЗемсков-ы5к
@ЗахарЗемсков-ы5к 9 дней назад
Это нихрена не работает, нервы сдают уже, киньте кто-то норм код для передвижения пожалуйста, уже 5-ый день ничего найти не могу
@loYo00
@loYo00 18 дней назад
Ничего не помогло, НО натолкнуло на одну мысль. У меня VS был установлен по пути Program Files, а не (x86). Я сделал следующее (осторожно! на свой страх и риск): 1. Я попробовал перенести папку с VS (которая по году называется) в директорию в Program Files (x86) - это не помогло, но Unity как будто заново нашёл VS 2. В External Tools я поставил все галочки в "Generate .csproj files for:". После этого VS как будто впервые запустился и подтянул все библиотеки нужные (их стало видно в обозревателе решений справа в окне VS). Не уверен сработает ли это у тех, кому не помогло видео, но попробовать думаю стоит
@FrogFrogi
@FrogFrogi 18 дней назад
Я не уверен , что заметишь, но когда у меня персонаж один раз подпрыгивает то потом он прыгать не может даже когда стоит на земле не знаете из за чего это может быть
@538h
@538h 23 дня назад
Спасибо большое, но у меня появился баг при котором прыгать бесконечно можно стоя в плотную к стене. Как это можно исправить?
@nikitakogtikov3594
@nikitakogtikov3594 25 дней назад
Спасибо, без воды, все четко, проблема решена!
@VinDizel_c6
@VinDizel_c6 26 дней назад
очень помогло я пол года с этим жил спасибо огромное
@weritir9518
@weritir9518 Месяц назад
Класс
@Колобожко
@Колобожко Месяц назад
а где посомтреть процесс разработки игры? а то чот видео не очень информативное
@КАКУВСЕХ-ю8ы
@КАКУВСЕХ-ю8ы Месяц назад
Привет твой канал показал мне базу и я наконец то начал свой путь в геймдев в итоге ушёл из юнити и перешел в годо😂😂😂 Всë равно спасибы ты был большим пинком под мой ленивый зад В джеме участвую надеюсь будет видео или стрим по играм с джема Всем кто участвует удачи
@oculusserpentis3731
@oculusserpentis3731 Месяц назад
Вот почему каждый раз так... Я почти на год забиваю на этот ваш гейдев, а потом на рандоме захожу к нубу, а у него день назад видео опубликовано о новом джеме! Кто из нас двоих гадалка?
@NoobGameDev
@NoobGameDev Месяц назад
🤣 Получается, что ты) Всеми фибрами души чувствуешь, что именно в этом году будет видео)))😅
@OzuxetTWWD
@OzuxetTWWD Месяц назад
Спасибо тебе большое ❤ Жалко нет новых видео 😢 Благодаря тебя я начал делать свои игры и создал свою студию, еще раз спасибо ❤
@NoobGameDev
@NoobGameDev Месяц назад
Это очень круто! 👍Развития студии и успешных интересных проектов)
@K__rakenDeveloper
@K__rakenDeveloper Месяц назад
Чëт очень долго делается игра, думаю что она нифига не окупится
@NoobGameDev
@NoobGameDev Месяц назад
@@K__rakenDeveloper Ну, если так случится, то она будет не плохим таким пунктом в резюме) Да, и сам опыт такого большого проекта пригодится. И занимаемся мы ей далеко не 24/7 - хорошо если получается день из недели ей уделить 😔 В любом случае у нас цель: доделать её и выпустить)
@K__rakenDeveloper
@K__rakenDeveloper Месяц назад
@@NoobGameDev а кем ты работаешь?
@K__rakenDeveloper
@K__rakenDeveloper Месяц назад
Всë таки не silksong
@МаксСимычка
@МаксСимычка Месяц назад
1:54 короче, я тебя прибью если не будет моей темы😂
@NoobGameDev
@NoobGameDev Месяц назад
От меня только 50% этого "будя" зависит))
@МаксСимычка
@МаксСимычка Месяц назад
Ого, крутой Арт на стене! By Симычка (Xavic)
@themegajediOBVM
@themegajediOBVM Месяц назад
Здорова дружище!!! Вот, Ютюб вовремя порекомендовал! Очень рад видеть тебя!
@NoobGameDev
@NoobGameDev Месяц назад
Здравствуй, дорогой!!! Это просто я раз в год видео делаю)) Тоже очень рад тебя "видеть")
@nurdauletshadiyarov9122
@nurdauletshadiyarov9122 Месяц назад
почему персонаж мой не двигается при нажатии a или d
@WindDeerStud
@WindDeerStud Месяц назад
хех не думал что вернусь к твоим гайдам, спустя 3 года учебы
@fasbodeveloper8170
@fasbodeveloper8170 Месяц назад
большое спасибо чел! много раз уже выручал
@Nik-2009
@Nik-2009 Месяц назад
Спасибо вам большое! всех благ
@kntrust8887
@kntrust8887 Месяц назад
Спасибо за видео но у меня персонаж не хочет прыгать от стен (только один раз двойной прыжок и прыжки от стен не обновляются) так же если будучи на стене прожать w+space тогда у персонаж переворачивается и летит в низ Вот код: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { public Rigidbody2D rb; public Animator anim; void Start() { rb = GetComponent<Rigidbody2D>(); anim = GetComponent<Animator>(); GroundCheckRadius = GroundCheck.GetComponent<CircleCollider2D>().radius; TopCheckRadius = TopCheck.GetComponent<CircleCollider2D>().radius; realSpeed = speed; WallCheckRadiusUp = WallCheckUp.GetComponent<CircleCollider2D>().radius; WallCheckRadiusDown = WallCheckUp.GetComponent<CircleCollider2D>().radius; gravityDef = rb.gravityScale; } void Update() { Walk(); Reflect(); CheckingGround(); Jump(); Lunge(); SquatCheck(); Run(); CheckingWall(); MoveOnWall(); WallJump(); } public Vector2 moveVector; public int speed = 3; public int fastSpeed = 6; private int realSpeed; void Walk() { if (!blockMoveX) { moveVector.x = Input.GetAxisRaw("Horizontal"); rb.velocity = new Vector2(moveVector.x * realSpeed, rb.velocity.y); anim.SetFloat("moveX", Mathf.Abs(moveVector.x)); } } public bool faceRight = true; void Reflect() { if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight)) { Vector3 temp = transform.localScale; temp.x *= -1; transform.localScale = temp; faceRight = !faceRight; } } public bool onGround; public LayerMask Ground; public Transform GroundCheck; private float GroundCheckRadius; void CheckingGround() { onGround = Physics2D.OverlapCircle(GroundCheck.position, GroundCheckRadius, Ground); anim.SetBool("onGround", onGround); } public int jumpForce = 210; private int jumpCount = 0; public int maxJumpValue = 2; void Jump() { if (Input.GetKeyDown(KeyCode.S)) { Physics2D.IgnoreLayerCollision(6, 7, true); Invoke("IgnoreLayerOff", 0.25f); } if (Input.GetKeyDown(KeyCode.Space) && !jumpLock) { if (onGround) { anim.StopPlayback(); anim.Play("jump"); rb.velocity = new Vector2(rb.velocity.x, 0); rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); } else if (++jumpCount < maxJumpValue) { anim.StopPlayback(); anim.Play("doubleJump"); rb.velocity = new Vector2(0, 10); } } if (onGround) { jumpCount = 0; } } void IgnoreLayerOff() { Physics2D.IgnoreLayerCollision(6, 7, false); } public int lungeImpulse = 5000; void Lunge() { if (Input.GetKeyDown(KeyCode.F) && !lockLunge) { lockLunge = true; Invoke("LungeLock", 1f); anim.StopPlayback(); anim.Play("lunge"); rb.velocity = new Vector2(0, 0); if (rb.transform.localScale.x < 0) { rb.AddForce(Vector2.left * lungeImpulse); } else { rb.AddForce(Vector2.right * lungeImpulse); } } } private bool lockLunge = false; void LungeLock() { lockLunge = false; } public Transform TopCheck; private float TopCheckRadius; public LayerMask Roof; public Collider2D poseStand; public Collider2D poseSquat; private bool jumpLock = false; void SquatCheck() { if (Input.GetKey(KeyCode.LeftControl)) { anim.SetBool("squat", true); poseStand.enabled = false; poseSquat.enabled = true; jumpLock = true; } else if (!Physics2D.OverlapCircle(TopCheck.position, TopCheckRadius, Roof)) { anim.SetBool("squat", false); poseStand.enabled = true; poseSquat.enabled = false; jumpLock = false; } } void Run() { if (Input.GetKey(KeyCode.LeftShift)) { anim.SetBool("run", true); realSpeed = fastSpeed; } else { anim.SetBool("run", false); realSpeed = speed; } } public bool onWall; public LayerMask Wall; public Transform WallCheckUp; public Transform WallCheckDown; private float WallCheckRadiusDown; private float WallCheckRadiusUp; void CheckingWall() { onWall = (Physics2D.OverlapCircle(WallCheckUp.position, WallCheckRadiusUp, Wall) && Physics2D.OverlapCircle(WallCheckDown.position, WallCheckRadiusDown, Wall)); anim.SetBool("onWall", onWall); } public float upDownSpeed = 4f; public float slideSpeed = 0; private float gravityDef; void MoveOnWall() { if (onWall && !onGround) { moveVector.y = Input.GetAxisRaw("Vertical"); anim.SetFloat("UpDown", moveVector.y); if (!blockMoveX) { anim.StopPlayback(); anim.Play("UpDown"); if (moveVector.y == 0) { rb.gravityScale = 0; rb.velocity = new Vector2(0, slideSpeed); } } if (moveVector.y > 0) { rb.velocity = new Vector2(rb.velocity.x, moveVector.y * upDownSpeed / 2); } else if (moveVector.y < 0) { rb.velocity = new Vector2(rb.velocity.x, moveVector.y * upDownSpeed); } } else if (!onGround && !onWall) { rb.gravityScale = gravityDef; } } private bool blockMoveX; public float jumpWallTime = 0.5f; private float timerJumpWall; public Vector2 jumpAngle = new Vector2(3.5f, 10); void WallJump() { if (onWall && !onGround && Input.GetKeyDown(KeyCode.Space)) { blockMoveX = true; moveVector.x = 0; anim.StopPlayback(); anim.Play("wallJump"); transform.localScale *= new Vector2(1,-1); faceRight = !faceRight; rb.gravityScale = gravityDef; rb.velocity = new Vector2(0, 0); rb.velocity *= new Vector2(transform.localScale.x * jumpAngle.x, jumpAngle.y); } if (blockMoveX && (timerJumpWall += Time.deltaTime) >= jumpWallTime) { if (onWall || onGround || Input.GetAxisRaw("Horizontal") != 0 ) { blockMoveX = false; timerJumpWall = 0; } } } }
@kntrust8887
@kntrust8887 2 месяца назад
спасибо за видео но у меня мой двойной прыжок работает через раз хотя код такой: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour // - Вместо «PlayerMove» должно быть имя файла скрипта { public Rigidbody2D rb; public Animator anim; void Start() { rb = GetComponent<Rigidbody2D>(); anim = GetComponent<Animator>(); GroundCheckRadius = GroundCheck.GetComponent<CircleCollider2D>().radius; } void Update() { Walk(); Reflect(); CheckingGround(); } void FixedUpdate() { Jump(); } public Vector2 moveVector; public int speed = 3; void Walk() { moveVector.x = Input.GetAxisRaw("Horizontal"); rb.velocity = new Vector2(moveVector.x * speed, rb.velocity.y); anim.SetFloat("moveX", Mathf.Abs(moveVector.x)); } public bool faceRight = true; void Reflect() { if ((moveVector.x > 0 && !faceRight) || (moveVector.x < 0 && faceRight)) { Vector3 temp = transform.localScale; temp.x *= -1; transform.localScale = temp; faceRight = !faceRight; } } public bool onGround; public LayerMask Ground; public Transform GroundCheck; private float GroundCheckRadius; void CheckingGround() { onGround = Physics2D.OverlapCircle(GroundCheck.position, GroundCheckRadius, Ground); anim.SetBool("onGround", onGround); } public int jumpForce = 210 ; private int jumpCount = 0; public int maxJumpValue = 2; void Jump() { if (Input.GetKeyDown(KeyCode.Space)) { if (onGround) { anim.StopPlayback(); anim.Play("jump"); rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); } else if (++jumpCount < maxJumpValue) { anim.StopPlayback(); anim.Play("doubleJump"); rb.velocity = new Vector2(0, 10); } } if (onGround) { jumpCount = 0; } } } ecть подозрения на анимацию как на видео 2:00 другие способы в ролике тоже пробовал не помогли
@3xac7
@3xac7 2 месяца назад
если прыжок почти никак не изменяется и при этом нужно ставить слишком огромные значения jumpValueIteration, то вам нужно ограничить fps, то есть прописывать при старте Application.targetFrameRate = 60;
@RiviyCat2622
@RiviyCat2622 2 месяца назад
Кто сможет помочь с кодом на ускорение на лестнице по нажатию шифта ? Автору респект : )
@IlyKlim
@IlyKlim 2 месяца назад
как же жизненно
@Tryicky
@Tryicky 2 месяца назад
Что делать? Код работал как надо, колайдеры менялись и скорость при присяде тоже менялась, я перезашел и колайдер не меняется и скорость только стандартная. В самом низу кода: public class RunPlayer : MonoBehaviour { private float speed = 3.5f; public float jumpForce; // power of jump private Rigidbody2D rigidbody2d; // power of weight // work with other object private SpriteRenderer spriteRenderer; private Animator animator; private void Start() { rigidbody2d = GetComponent<Rigidbody2D>(); spriteRenderer = GetComponent<SpriteRenderer>(); animator = GetComponent<Animator>(); TopRadius = TopPlayer.GetComponent<CircleCollider2D>().radius; } private void Update() { Baby(); Jump(); CheckingGround(); // Save gamer's coordionats Vector3 position = transform.position; // add to saved coordionats player's input from bord position.x += Input.GetAxis("Horizontal") * speed * Time.deltaTime; transform.position = position; // new position if (Input.GetAxis("Horizontal") != 0) { if (Input.GetAxis("Horizontal") > 0) // Right { spriteRenderer.flipX = false; } else if (Input.GetAxis("Horizontal") < 0) // Left { spriteRenderer.flipX = true; } animator.SetInteger("State", 1); } else { animator.SetInteger("State", 0); } } private void Jump() { if(Input.GetKeyDown(KeyCode.Space) && onGround) { rigidbody2d.AddForce(Vector2.up * jumpForce); } } public bool onGround; public Transform GroundCheck; public float CheckRadius = 0.18f; public LayerMask Ground; void CheckingGround() { onGround = Physics2D.OverlapCircle(GroundCheck.position, CheckRadius, Ground); animator.SetBool("onground", onGround); } public Transform TopPlayer; private float TopRadius; public LayerMask Top; public CapsuleCollider2D poseStand; public CapsuleCollider2D poseSquad; public float standSpeed = 3.5f; // скорость в обычном состоянии public float squatSpeed = 2.0f; // скорость в приседе private void Baby() { if (Input.GetKey(KeyCode.S)) { animator.SetBool("squad", true); poseStand.enabled = false; poseSquad.enabled = true; speed = squatSpeed; } else animator.SetBool("squad", false); poseStand.enabled = true; poseSquad.enabled = false; speed = standSpeed; } }
@Tryicky
@Tryicky 2 месяца назад
Огосподи, я else animator.SetBool("squad", false); poseStand.enabled = true; poseSquad.enabled = false; speed = standSpeed; не взял в скобки, протуп
@Ilja.Kiriljuk
@Ilja.Kiriljuk 2 месяца назад
Спасибо, подсказал как реализовать некоторые вещи в проекте! Советую остальным, после просмотра данного видео ещё почитать документацию в C# про делегаты
@oneproggames
@oneproggames 2 месяца назад
и ещё раз пропал =
@NoobGameDev
@NoobGameDev 2 месяца назад
😂Да, уж) Делаю видео, кстати - может, в этот раз получится в режим войти)
@bingogame225
@bingogame225 2 месяца назад
У меня анимация прыжка обратно в анимацию покоя не переходит
@deramis8654
@deramis8654 2 месяца назад
подскажите почему персонаж просто падает во время того как я хожу(на бок)
@mayziyt4560
@mayziyt4560 2 месяца назад
в rigibody в constrains freez z
@Tryicky
@Tryicky 2 месяца назад
Что за ошибка: MissingComponentException: There is no 'Rigidbody' attached to the "Player" game object, but a script is trying to access it. You probably need to add a Rigidbody to the game object "Player". Or your script needs to check if the component is attached before using it. UnityEngine.Rigidbody.AddForce (UnityEngine.Vector3 force, UnityEngine.ForceMode mode) (at <8f5a6192d1424a76a696cfc6c73324b6>:0) UnityEngine.Rigidbody.AddForce (UnityEngine.Vector3 force) (at <8f5a6192d1424a76a696cfc6c73324b6>:0) RunPlayer.Jump () (at Assets/Scripts/RunPlayer.cs:54)
@Tryicky
@Tryicky 2 месяца назад
У меня был вместо компонента Rigidbody2D просто Rigidbody
@Razar11-l2h
@Razar11-l2h 2 месяца назад
Помогло! Большое спасибо)
@OverFlyChannel
@OverFlyChannel 3 месяца назад
Спасибо большое! Очень рад что нашел)
@Кракенсобакен
@Кракенсобакен 3 месяца назад
спасибо, полезная штука! Листал всякие гайды по юнити, просто от нефиг делать, только подумал "и так достаточно знаю" и тут на это наткнулся, впервые о таком слышу, после ролика сразу все понял, респект!
@qwerty5626
@qwerty5626 3 месяца назад
Ты лучший!!!
@efimother
@efimother 3 месяца назад
А как можно настроить скорость рывка? Если уменьшать силу импульса в переменной, то просто уменьшается расстояние рывка, но персонаж при этом движется так быстро, словно телепортируется. А я хочу управлять расстоянием, на которое произойдет рывок и скоростью движения персонажа во время рывка. Что нужно сделать?
@Андрей-о1д4с
@Андрей-о1д4с 3 месяца назад
Идеальный урок! Спасибо. Очень помог. Мне события сложно было понять, а к Action я вообще боялся притрагиваться.
@darkscorp4415
@darkscorp4415 3 месяца назад
Понятно, но ничего не понятно.
@TFOX-1
@TFOX-1 3 месяца назад
Всё отлично и всё работает, спасибо
@сашазавальнюк-ы2и
@сашазавальнюк-ы2и 3 месяца назад
Респект
@Penskelet
@Penskelet 4 месяца назад
Привет! у меня работает двойной и тройной прыжок только при первом нажатии, а дальше только по одиночному. я не понимаю что у меня не праильно, можешь пожалуйста посмотреть код: public float jumpForse = 5f; private int jumpCount = 0; public int maxJumpValue = 2; public bool onGround; public Transform GroundCheck; public float checkRadius = 0.5f; public LayerMask Ground; void CheckingGround() { onGround = Physics2D.OverlapCircle(GroundCheck.position, checkRadius, Ground); } void Jump() { if (Input.GetKeyDown(KeyCode.Space) && (onGround || (++jumpCount < maxJumpValue))) { rb.velocity = new Vector2(rb.velocity.x, jumpForse); } } плюсом еще в Update вызываеются функции Jump и CheckingGround.
@Коробыч
@Коробыч 4 месяца назад
Тема: 10 секунд
@spectatorspectator9079
@spectatorspectator9079 4 месяца назад
Обалдеть. Я зря все это время думал над тем, как связать свой GameManager с существующими монстрами!!! Спасибо за гайд!!
@ВадимДубинский-т5ч
@ВадимДубинский-т5ч 4 месяца назад
Спасибо, помог третий способ
@ЕгорМакеев-е6щ
@ЕгорМакеев-е6щ 4 месяца назад
От души, за видео!
@Intiled-wj3wy
@Intiled-wj3wy 4 месяца назад
ОООО холоу кнайт
@Синемордый
@Синемордый 4 месяца назад
я тоже хочу выразить большую благодарность за прекрасно поданный материал.
@Intiled-wj3wy
@Intiled-wj3wy 5 месяцев назад
лучше сделайте без эфектора. вот скрипт using UnityEngine; public class Platform : MonoBehaviour { Transform player; bool CanSwap = true; void Start() { player = GameObject.FindGameObjectWithTag("Player").transform; } void LateUpdate() { if(CanSwap) { if(player.transform.position.y > transform.position.y) { Physics2D.IgnoreLayerCollision(3,8,false); if(Input.GetKeyDown(KeyCode.S)) { CanSwap = false; Physics2D.IgnoreLayerCollision(3,8,true); Invoke("invokeSwap",0.3f); } } else { Physics2D.IgnoreLayerCollision(3,8,true); } } } void invokeSwap() { CanSwap = true; } }
@ЛУКИТ
@ЛУКИТ 5 месяцев назад
Как менять цвет нажатия кнопок
@memni_gus
@memni_gus 5 месяцев назад
Можно код из видео?