Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Чем Луа лучше Пайтона и наоборот? Буду использовать в целях написания сценариев.
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
Unity, не могу написать код
123Fi 321
Ученик
(61), на голосовании
5 месяцев назад
Помогите исправить код чтобы анимация работала и объект прыгал только находясь на земле
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float speed = 3f;
[SerializeField] private int lives = 5;
[SerializeField] private float jumpForce = 15;
private bool isGrounded = false;
private Rigidbody2D rb;
private Animator anim;
private SpriteRenderer sprite;
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
sprite = GetComponentInChildren<SpriteRenderer>();
}
private void Update()
{
if (isGrounded) State = States.idle;
if (Input.GetButton("Horizontal"))
Run();
if (isGrounded && Input.GetButtonDown("jump"))
Jump();
}
private void Run()
{
if (isGrounded) State =
States.run
;
Vector3 dir = transform.right * Input.GetAxis("Horizontal");
transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
sprite.flipX = dir.x < 0.0f;
}
private void Jump()
{
rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
if (isGrounded) State = States.jump;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
private States State
{
get { return (States)anim.GetInteger("state"); }
set { anim.SetInteger("state", (int)value); }
}
}
public enum States
{
idle,
run,
jump
}
Дополнен 6 месяцев назад
ПЖ
Голосование за лучший ответ
Вася Висюлькин
Мыслитель
(5711)
6 месяцев назад
обоже ты с ютуба взял или как
Похожие вопросы
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float speed = 3f;
[SerializeField] private int lives = 5;
[SerializeField] private float jumpForce = 15;
private bool isGrounded = false;
private Rigidbody2D rb;
private Animator anim;
private SpriteRenderer sprite;
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
sprite = GetComponentInChildren<SpriteRenderer>();
}
private void Update()
{
if (isGrounded) State = States.idle;
if (Input.GetButton("Horizontal"))
Run();
if (isGrounded && Input.GetButtonDown("jump"))
Jump();
}
private void Run()
{
if (isGrounded) State = States.run ;
Vector3 dir = transform.right * Input.GetAxis("Horizontal");
transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
sprite.flipX = dir.x < 0.0f;
}
private void Jump()
{
rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
if (isGrounded) State = States.jump;
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Ground")
{
isGrounded = true;
}
}
private States State
{
get { return (States)anim.GetInteger("state"); }
set { anim.SetInteger("state", (int)value); }
}
}
public enum States
{
idle,
run,
jump
}