Mail.ru
Почта
Мой Мир
Одноклассники
ВКонтакте
Игры
Знакомства
Новости
Календарь
Облако
Заметки
Все проекты
Все проекты
выход
Регистрация
Вход
Категории
Все вопросы проекта
Компьютеры, Интернет
Темы для взрослых
Авто, Мото
Красота и Здоровье
Товары и Услуги
Бизнес, Финансы
Наука, Техника, Языки
Философия, Непознанное
Города и Страны
Образование
Фотография, Видеосъемка
Гороскопы, Магия, Гадания
Общество, Политика, СМИ
Юридическая консультация
Досуг, Развлечения
Путешествия, Туризм
Юмор
Еда, Кулинария
Работа, Карьера
О проектах Mail
Животные, Растения
Семья, Дом, Дети
Другое
Знакомства, Любовь, Отношения
Спорт
Золотой фонд
Искусство и Культура
Стиль, Мода, Звезды
Полный список
Спросить
Лидеры
Поиск по вопросам
Ответы Mail
Программирование
Android
C/C++
C#
iOS
Java
JavaScript
jQuery
SQL
Perl
PHP
Python
Веб-дизайн
Верстка, CSS, HTML, SVG
Системное администрирование
Другие языки и технологии
Вопросы - лидеры.
Написал код ,не пойму что он делает? объясните ,пожалуйста ?
1 ставка
Чем Луа лучше Пайтона и наоборот? Буду использовать в целях написания сценариев.
1 ставка
Лидеры категории
Лена-пена
Искусственный Интеллект
М.И.
Искусственный Интеллект
Y.Nine
Искусственный Интеллект
•••
Персонаж бесконечно поворачивается поворачивается Unity 2D
Родион Антонов
Ученик
(151), на голосовании
7 месяцев назад
Написал код на движение игрока, поворот подсмотрел в видео. Когда персонаж стоит на месте поворачивается в разные стороны на бешенной скорости.
код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movement_player : MonoBehaviour
{
public float Speed;
public float DirectionX;
public float JumpForce;
private bool FacingRight = true;
private Rigidbody2D rb;
SpriteRenderer spr;
public Animator anim;
public bool isGrounded = false;
public float checkGroundoffsetY;
public float checkGroundRadious;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
spr = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update()
{
Mathf.Abs(DirectionX);
Flip();
DirectionX = Input.GetAxis("Horizontal");
transform.position += new Vector3(DirectionX, 0, 0) * Speed * Time.deltaTime;
if (Input.GetKeyDown(
KeyCode.Space
) && Mathf.Abs(rb.velocity.y) < 0.05)
rb.AddForce(new Vector2(0, JumpForce), ForceMode2D.Impulse);
anim.SetFloat("HorizontalMove", Mathf.Abs(DirectionX));
if (DirectionX < 0 && FacingRight)
{
Flip();
}
else if (DirectionX > 0 && !FacingRight)
{
Flip();
}
}
private void FixedUpdate()
{
CheckGroud();
}
private void Flip()
{
FacingRight = !FacingRight;
transform.Rotate(0f, 180f, 0f);
}
private void CheckGroud()
{
Collider2D[] collider = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y + checkGroundoffsetY), checkGroundRadious);
if (collider.Length > 1)
{
isGrounded = true;
}
else
{
isGrounded = false;
}
}
}
Голосование за лучший ответ
ivan866_z
Просветленный
(20228)
8 месяцев назад
в строке 34 идет вызов функции Flip(), а по задумке он должен идти только когда скорость по оси X меняет знак
Родион Антонов
Ученик (151)
8 месяцев назад
от души брат
Похожие вопросы
код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movement_player : MonoBehaviour
{
public float Speed;
public float DirectionX;
public float JumpForce;
private bool FacingRight = true;
private Rigidbody2D rb;
SpriteRenderer spr;
public Animator anim;
public bool isGrounded = false;
public float checkGroundoffsetY;
public float checkGroundRadious;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
spr = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update()
{
Mathf.Abs(DirectionX);
Flip();
DirectionX = Input.GetAxis("Horizontal");
transform.position += new Vector3(DirectionX, 0, 0) * Speed * Time.deltaTime;
if (Input.GetKeyDown( KeyCode.Space ) && Mathf.Abs(rb.velocity.y) < 0.05)
rb.AddForce(new Vector2(0, JumpForce), ForceMode2D.Impulse);
anim.SetFloat("HorizontalMove", Mathf.Abs(DirectionX));
if (DirectionX < 0 && FacingRight)
{
Flip();
}
else if (DirectionX > 0 && !FacingRight)
{
Flip();
}
}
private void FixedUpdate()
{
CheckGroud();
}
private void Flip()
{
FacingRight = !FacingRight;
transform.Rotate(0f, 180f, 0f);
}
private void CheckGroud()
{
Collider2D[] collider = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y + checkGroundoffsetY), checkGroundRadious);
if (collider.Length > 1)
{
isGrounded = true;
}
else
{
isGrounded = false;
}
}
}