Добрый день! Подскажите. пожалуйста. Вчера выключили свет резко и что-то слетело, что перестал работать прыжок. Скрипты отвязались многие, перепривязал. Не знаю, видимо еще что-то не сделал.

Что-то с переменной ‘isGrounded’ не так.
Выдает ошибку Parameter ‘isGrounded’ does not exist.
UnityEngine.Animator:SetBool (string,bool)
Player:FixedUpdate () (at Assets/Resources/Sprites/Scripts/Player.cs:27)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

>
private void OnCollisionExit2D(Collision2D col)
<
if (col.gameObject.CompareTag(«Platform»))//Проверяет тег GameObject на соответствие Platform, если земли не касается
<
isGrounded = false;
>

Скрин инспектора https://gamedev.ru/files/images/?id=162369
Не работает прыжок при нажатии enter

  • DemiosFantasimo
  • Участник

#1
13:31, 11 июня 2022

Попытаюсь ткнуть пальцем в небо. Так то вроде все ровно. Может скрипт Player срабатывает раньше. Попробуй натроить GroundDetection в иерархии вызовов выше чем Player

Как избавиться от бага что игрок не может прыгать в игре Skyrim

  • DemiosFantasimo
  • Участник

#2
(Правка: 13:37) 13:36, 11 июня 2022

и кстати еще совет. У тебя в ошибке написан номер строки гдеона произошла. А теперь подумай как мы должны в твоем листинге искать где эта твоя строка 27. и еще когда фоткаешь консоль тыкай курсором в ошибку. Там появится нижныий отдел где будет иерархия вызовов. чаще конечно инфа не очень полезная ,но все таки мало ли когда идет речь о работе с несколькими скриптами. Кто там кого вызвал и все такое.

  • Eugeny1984
  • Пользователь

#3
15:43, 11 июня 2022

DemiosFantasimo
Спасибо за рекомнедации. переставил скрипт GroundDetection ниже чем Player в инспекторе, но не помогло к сожалению. 27-ая строчка с ошибкой эта вот эта animator.SetBool(«isGrounded»,groundDetection.isGrounded);

Источник: gamedev.ru

Помощь — Не могу прыгать и бегать

Felix_Hamilan

Участник

Автор темы

  1. 0.3.7 (R1)

Всем привет! Скачал сборочку с скриптами, захожу радостный в самп. Игра работает если что. Но при нажатии на пробел я не могу прыгать, нажимаю на шифт — ничего. Что делать, может это изза какогото скрипта?

P.S могу кинуть логи МЛ и СФ | Если чья-та идея по исправлению сработает на аризона рп прескотт кину 1-2кк

Последнее редактирование: 5 Май 2022

LR UDBE 999

Cбрасывал их до дефолта, нифига

Их у меня не очень много, но их перечислять тоже не буду

клео очисти и проверь, если не сработает аси, мун, на крайняк сф

Sidney31

Известный

чекни настройки управления, мб у тебя кривые бинды

silentium2006

Потрачен

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
чо за скрипты

Почему я не могу высоко прыгнуть играя в волейбол

Felix_Hamilan

Участник

Автор темы
чекни настройки управления, мб у тебя кривые бинды

Cбрасывал их до дефолта, нифига

чо за скрипты
Их у меня не очень много, но их перечислять тоже не буду

Marayd :3

может быть проблема в ограничниях антивируса, и еще на скажем лаунчере работает (если наооборот типо на лаунчере не работает) то на клиенте?

LR UDBE 999

Потрачен

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Cбрасывал их до дефолта, нифига

Их у меня не очень много, но их перечислять тоже не буду

клео очисти и проверь, если не сработает аси, мун, на крайняк сф

serty

Участник

удали gta_sa.set мне помогло давным давно<3

Cбрасывал их до дефолта, нифига

Их у меня не очень много, но их перечислять тоже не буду

попробуй убрать с игры моонлоудер сф и клео и проверь если будет всё норм то кинь к примеру клео если тоже норм то кидай сф если будет проблема то дела в нём и убирай так по чучуть скрипты я так делаю если сборка крашет или ещё одна проблема

Читайте также:  Посоветуйте что то типа Скайрима

HavenS

Участник

Всем привет! Скачал сборочку с скриптами, захожу радостный в самп. Игра работает если что. Но при нажатии на пробел я не могу прыгать, нажимаю на шифт — ничего. Что делать, может это изза какогото скрипта?

P.S могу кинуть логи МЛ и СФ | Если чья-та идея по исправлению сработает на аризона рп прескотт кину 1-2кк

Попробуй скрипты перекинуть на другую сборку и проверь, если также кинь скрипты попробую помочь

Felix_Hamilan

Участник

Автор темы

удали gta_sa.set мне помогло давным давно<3

попробуй убрать с игры моонлоудер сф и клео и проверь если будет всё норм то кинь к примеру клео если тоже норм то кидай сф если будет проблема то дела в нём и убирай так по чучуть скрипты я так делаю если сборка крашет или ещё одна проблема

клео очисти и проверь, если не сработает аси, мун, на всякий аси

Спасибо большое брат, удалил некоторые аси — помогло. Лучший! Берешь приз 500к на арз прескотт или нет?

Источник: www.blast.hk

Проблема с прыжками в Unity — персонаж не прыгает, если идет к платформе.

У меня проблема с прыжком: если мой персонаж ХОДИТ на платформу X, он не будет прыгать, но когда она Прыгает на платформу X, она может совершить прыжок.

Для платформ В настоящее время я использую 2 2D-коллайдера Box Collider (один с установленным флажком «запускается»)

Для персонажа В настоящее время я использую 2 Box Collider 2D (один с отмеченным флажком) и Rigidbody 2D.

Ниже приведен код для прыжков и заземления, который я сейчас пытаюсь использовать.

< public float Speed; public float Jump; bool grounded = false; void Start() < >void Update() < if (Input.GetKeyDown(KeyCode.UpArrow)) < if (grounded) < GetComponent().velocity = new Vector2(GetComponent().velocity.x, Jump); > > > void OnTriggerEnter2D() < grounded = true; >void OnTriggerExit2D() < grounded = false; >>

Проблема возникает в одной и той же части каждой платформы. (Каждый квадрат представляет собой спрайт одной платформы, и все они имеют одинаковые точные характеристики, поскольку я копирую и вставляю каждый из них). Пожалуйста, проверьте фото по этой ссылке: https://imgur.com/a/vTmHw

Комментарии (1)

Я предлагаю вам снять галочку с «istrigger» на задних коллайдерах и вместо «ontrigger» поставить отметку «oncollisionenter2d»: docs.unity3d.com/ScriptReference/…

16.04.2018 11:49

JavaScript является однопоточным, то есть он может обрабатывать только одну задачу за раз. Для обработки длительных задач, таких как сетевые запросы.

Если вы ищете надежных разработчиков PHP рядом с вами, вот список лучших компаний по разработке PHP.

Примечание: В этой статье я покажу вам, как скрапировать поиск Apple App Store и получить точно такой же результат, как на Apple iMac, потому что.

Редкая коллекция доступна в профиле на GitHub ✨

Hoisting — это поведение в JavaScript, при котором переменные и объявления функций автоматически «перемещаются» в верхнюю часть соответствующих.

Angular — это фреймворк. Вы можете создать практически любое приложение без использования сторонних библиотек.

Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это происходит потому, что у ваших квадратов есть отдельные коллайдеры. Представьте себе это:

Есть два блока: A и B. Вы стоите на блоке A. Теперь попробуйте пройтись по блоку B. Как только ваш коллайдер Rigidbody2D касается блока B, ваш персонаж получает событие OnTriggerEnter2D(. ). Теперь вы утверждаете, что заземлены. Однако в этот момент вы все еще сталкиваетесь с блоком A. Как только ваш Rigidbody2D больше не сталкивается с блоком A, ваш персонаж получает OnTriggerExit2D(. ). Теперь вы утверждаете, что больше не обоснованы. Но на самом деле вы все равно сталкиваетесь с блоком B.

Читайте также:  Скайрим где найти 3 дракона

Решение

Вместо переменной bool для проверки заземления можно использовать переменную типа byte с именем collisionsCounter:

  • Как только вы вводите триггер — увеличивайте счетчик.
  • Как только вы выйдете из триггера — уменьшите счетчик.

Проверьте, действительно ли вы находитесь над коллайдером!

Теперь, когда вам нужно проверить, заземлен ли ваш персонаж, вы можете просто использовать

if (collisionsCounter > 0) < // I am grounded, allow me to jump >

РЕДАКТИРОВАТЬ

Собственно, после того, как задал вопрос дальше, я понял, что у вас есть совершенно ненужные коллайдеры (я говорю о триггерных). Удалите те. Теперь у вас есть только один коллайдер на объект. Но чтобы получать призывы к коллизии, вам нужно изменить:

  • OnTriggerEnter2D(. ) в OnCollisionEnter2D(Collision2D)
  • OnTriggerExit2D(. ) в OnCollisionExit2D(Collision2D)

Окончательный код

[RequireComponent(typeof(Rigidbody2D))] public sealed class Character : MonoBehaviour < // A constant with tag name to prevent typos in code private const string TagName_Platform = «Platform»; public float Speed; public float Jump; private Rigidbody2D myRigidbody; private byte platformCollisions; // Check if the player can jump private bool CanJump < get < return platformCollisions >0; > > // Called once the script is started private void Start() < myRigidbody = GetComponent(); platformCollisions = 0; > // Called every frame private void Update() < // // // // // // // // // // // // // // // Need to check for horizontal movement // // // // // // // // // // // // // // // Trying to jump if (Input.GetKeyDown(KeyDode.UpArrow) CanJump == true) Jump(); >// Called once Rigidbody2D starts colliding with something private void OnCollisionEnter2D(Collision2D collision) < if (collision.collider.tag == TagName_Platform) platformCollisions++; >// Called once Rigidbody2D finishes colliding with something private void OnCollisionExit2D(Collision2D collision) < if (collision.collider.tag == TagName_Platform) platformCollisions—; >// Makes Character jump private void Jump() < Vector2 velocity = myRigidbody.velocity; velocity.y = Jump; myRigidbody.velocity = velocity; >>

Здесь могут быть незначительные опечатки, так как весь код был набран в Блокноте .

Причина, по которой у меня два коллайдера боксов, заключается в том, что если я использую только один и активирую триггер, мой персонаж проходит через него. Я действительно видел это в каком-то руководстве, и они использовали два, и он просто работал нормально, не знаю, почему он не работает на моем. есть ли у вас какие-либо другие советы, как использовать только ОДИН коллайдер коробки и сделать так, чтобы мой персонаж не провалился через него?

Совершенно нормально (не так много с точки зрения производительности), что один блок использует 2 коллайдера. Я имел в виду, что каждая из ваших платформ имеет отдельный набор коллайдеров. И когда вы переходите с одной платформы на другую, происходит то, что происходит с входом и выходом.

Сведас, мне очень жаль, что я действительно новичок в этом, когда я пытаюсь использовать OnCollisionEnter2D (Collision2D) и OnCollisionExit2D (Collision2D), я получаю ошибку в последней скобке «Детали столкновения, возвращаемые функциями обратного вызова физики 2D. Ожидается идентификатор».

Читайте также:  Где в Скайриме находится двойственное перо

Сведас Я на самом деле пытался поставить переменную, которая работала в том смысле, что я не получал никаких ошибок, но мой персонаж не прыгал. Вы случайно знаете какие-нибудь хорошие подробные руководства по прыжкам, чтобы мне не приходилось беспокоить вас этими глупыми вопросами?

Нет . прошло довольно много времени с тех пор, как я смотрел какие-либо учебники по Unity (не говоря уже о лучших практиках, советах и ​​т. Д.). Я отредактирую свой ответ, чтобы вы могли просто скопировать и вставить код .

16.04.2018 12:42
Ответ принят как подходящий

Я думаю, здесь есть пара проблем.

Во-первых, использование Triggers для проверки такого типа столкновения, вероятно, не лучший способ продвижения вперед. Я бы предложил нет использовать триггеры, а вместо этого использовать OnCollisionEnter2D(). Triggers просто определяет, перекрывается ли пространство столкновения двух объектов друг с другом, тогда как нормальные столкновения сталкиваются друг с другом, как если бы они были двумя твердыми объектами. Если смотреть, как если бы вы пытались определить, приземлились ли вы на пол, вы не хотите проваливаться сквозь пол, как ведет себя Triggers.

Во-вторых, я бы предложил использовать AddForce вместо GetComponent().velocity.

Ваш окончательный сценарий может выглядеть примерно так:

public class PlayerController : MonoBehaviour < public float jumpForce = 10.0f; public bool isGrounded; Rigidbody2D rb; void Start() < rb = GetComponent(); > void OnCollisionEnter2D(Collision2D other) < // If we have collided with the platform if (other.gameObject.tag == «YourPlatformTag») < // Then we must be on the ground isGrounded = true; >> void Update() < // If we press space and we are on the ground if (Input.GetKeyDown(KeyCode.Space) isGrounded) < // Add some force to our Rigidbody rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); // We have jumped, we are no longer on the ground isGrounded = false; >> >
Комментарии (7)

Под «YourPlatformTag» вы подразумеваете мать всех моих платформ? или ты имеешь ввиду имя каждого ребенка? Извините, я новичок в этом. И спасибо за подсказки, которые я даже не спрашивал (без сарказма), все подсказки помогают 🙂

Для каждой из ваших платформ, если вы посмотрите в инспектор, в правом верхнем углу есть опция тега. Здесь вы можете создавать свои собственные теги и применять их ко всем вашим платформам 🙂 Итак, вы можете создать тег под названием «Платформа» и изменить «YourPlatformTag» на «Платформа».

Ваш код работал как шарм, большое спасибо 🙂 но я все еще хотел бы выяснить, почему триггерный прыжок не работает только на определенных частях той же платформы, мне, возможно, придется использовать его в будущем? (я не знаю)

Возможно, ваш персонаж сталкивается не только с платформой, но и с несколькими платформами одновременно? В своем посте вы не проверяете, с чем сталкиваетесь, в основном написано whatever we collide with, set grounded to false. Может он перепутался между двумя состояниями grounded = true и grounded = false?

Я вижу, спасибо, чувак, я бы не хотел воспользоваться твоей помощью, но ты знаешь, почему мой персонаж застревает по бокам? Я могу понять почему, но не знаю, как это исправить .. imgur.com/a/J0iF9

После вашего кода мне не требовалось 2 коллайдера для одной платформы, поэтому я удалил один. Итак, у меня есть 1 коллайдер для персонажа и 1 для платформы.

Источник: reddeveloper.ru