Время от времени, балуюсь с Unity. Я пытаюсь рассказывать о том, что изучил, делюсь своим опытом и ошибками. Иногда провожу геймджемы и различные мероприятия. Благодарю вас за то, что интересуетесь каналом и поддерживаете меня. С удовольствием буду рад Вам помочь, либо просто пообщаться на нашем Дискорд сервере, присоединяйтесь: discord.gg/AHpWFBAJJr Также у меня есть Телеграм канал: t.me/Noob_Game_Dev И сайт где можно "пощупать" механики из видео: noobgamedev.xyz
Ничего не помогло, НО натолкнуло на одну мысль. У меня VS был установлен по пути Program Files, а не (x86). Я сделал следующее (осторожно! на свой страх и риск): 1. Я попробовал перенести папку с VS (которая по году называется) в директорию в Program Files (x86) - это не помогло, но Unity как будто заново нашёл VS 2. В External Tools я поставил все галочки в "Generate .csproj files for:". После этого VS как будто впервые запустился и подтянул все библиотеки нужные (их стало видно в обозревателе решений справа в окне VS). Не уверен сработает ли это у тех, кому не помогло видео, но попробовать думаю стоит
Я не уверен , что заметишь, но когда у меня персонаж один раз подпрыгивает то потом он прыгать не может даже когда стоит на земле не знаете из за чего это может быть
Привет твой канал показал мне базу и я наконец то начал свой путь в геймдев в итоге ушёл из юнити и перешел в годо😂😂😂 Всë равно спасибы ты был большим пинком под мой ленивый зад В джеме участвую надеюсь будет видео или стрим по играм с джема Всем кто участвует удачи
Вот почему каждый раз так... Я почти на год забиваю на этот ваш гейдев, а потом на рандоме захожу к нубу, а у него день назад видео опубликовано о новом джеме! Кто из нас двоих гадалка?
@@K__rakenDeveloper Ну, если так случится, то она будет не плохим таким пунктом в резюме) Да, и сам опыт такого большого проекта пригодится. И занимаемся мы ей далеко не 24/7 - хорошо если получается день из недели ей уделить 😔 В любом случае у нас цель: доделать её и выпустить)
спасибо за видео но у меня мой двойной прыжок работает через раз хотя код такой: 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 другие способы в ролике тоже пробовал не помогли
если прыжок почти никак не изменяется и при этом нужно ставить слишком огромные значения jumpValueIteration, то вам нужно ограничить fps, то есть прописывать при старте Application.targetFrameRate = 60;
Что делать? Код работал как надо, колайдеры менялись и скорость при присяде тоже менялась, я перезашел и колайдер не меняется и скорость только стандартная. В самом низу кода: 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; } }
Спасибо, подсказал как реализовать некоторые вещи в проекте! Советую остальным, после просмотра данного видео ещё почитать документацию в C# про делегаты
Что за ошибка: 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)
спасибо, полезная штука! Листал всякие гайды по юнити, просто от нефиг делать, только подумал "и так достаточно знаю" и тут на это наткнулся, впервые о таком слышу, после ролика сразу все понял, респект!
А как можно настроить скорость рывка? Если уменьшать силу импульса в переменной, то просто уменьшается расстояние рывка, но персонаж при этом движется так быстро, словно телепортируется. А я хочу управлять расстоянием, на которое произойдет рывок и скоростью движения персонажа во время рывка. Что нужно сделать?
Привет! у меня работает двойной и тройной прыжок только при первом нажатии, а дальше только по одиночному. я не понимаю что у меня не праильно, можешь пожалуйста посмотреть код: 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.