Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 12.04.2022
Сообщений: 7

Как отзеркалить персонажа?

12.04.2022, 09:12. Показов 2161. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте, я писал код для игры по видео, но после теста его у себя на пк, у меня персонаж не поворачивался в сторону куда я двигался, подскажите как это сделать, вот если нужно код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Hero: MonoBehaviour
{
    [SerializeField] float speed = 3f;
    [SerializeField] int lives = 5;
    [SerializeField] float jumpForce = 1.4f;
    bool Ground = false;
 
    Rigidbody2D rb;
    SpriteRenderer sprite;
 
 
 
    void Start()
    {
 
    }
 
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButton("Horizontal"))
            Run();
        if (Ground && Input.GetButton("Jump"))
            Jump();
 
    }
 
    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
        sprite = GetComponentInChildren<SpriteRenderer>();
    }
 
    void Run()
    {
        Vector3 dir = transform.right * Input.GetAxis("Horizontal");
        transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
 
        transform.localScale = new Vector2(-1, 1);
 
    }
 
    void Jump()
    {
        rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    }
 
    void Grounded()
    {
        Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, 0.1f);
        Ground = collider.Length > 1;
    }
 
    void FixedUpdate()
    {
        Grounded();
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2022, 09:12
Ответы с готовыми решениями:

Как отзеркалить предложение
Есть предложение например &quot;Hello World!&quot; Задача отзеркалить его тоесть программа должна выдать &quot;!dlroW olleH&quot; Язык...

Как отзеркалить вид в веб камере?
здравствуйте. борюсь с такой же проблемой. подскажите где скачивали нужную программу? Для Вашего вопроса создана отдельная тема

Веб-Камера Logitech HD Webcam C920. Как отзеркалить?
скачала с официального сайта программы для настройки вебки, но нажав на &quot;расширения&quot; выходят не те настройки, что должны открываться,...

8
6 / 5 / 1
Регистрация: 10.04.2022
Сообщений: 86
12.04.2022, 13:45
Перевернет конкретно, я думаю.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    private float moveInput;
    public bool isGrounded = false;
    public Transform groundCheck; //тебе нужно создать пустой game object на персонажа и закинуть его сюда через инспектор.
    public float checkRadius; //0.5 в инспекторе поставь.
    public LayerMask whatIsGround; //сверху в инспекторе где layer нажми Default и add layer там создай ground и повесь на платформу или на чем ты там ходишь.
    private bool facingRight = true;
 
private void Run()
    {
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
 
        moveInput = Input.GetAxis("Horizontal");
        RB.velocity = new Vector2(moveInput * speed, rb.velocity.y);
 
        if (facingRight == false && moveInput > 0)
        {
            Flip();
        }
        else if (facingRight == true && moveInput < 0)
        {
            Flip();
        }
    }
или вариант попроще:

C#
1
2
3
4
5
6
7
    void 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;
    }
Первый скрипт переворачивает полностью, второй только спрайт.

Добавлено через 29 минут
C#
1
2
3
4
5
private void Flip()
    {
        facingRight = !facingRight;
        transform.Rotate(0f, 180f, 0f);
    }
забыл добавить)
0
0 / 0 / 0
Регистрация: 12.04.2022
Сообщений: 7
12.04.2022, 14:25  [ТС]
К сожалению не получилось, второй вариант уже пробовал, персонаж не реагирует, есть еще варианты?
0
6 / 5 / 1
Регистрация: 10.04.2022
Сообщений: 86
12.04.2022, 14:59
Ну можно так попробовать, у меня например сработало.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Flip()
    {
        if (Input.GetAxisRaw("Horizontal") == 1)
        {
            transform.localScale = new Vector3(1, 1, 1);
        } else if (Input.GetAxisRaw("Horizontal") == -1)
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }
    }
 
private void Update()
{
if (Input.GetAxis("Horizontal") != 0)
    Flip();
}
если и это не прокатит то возможно ты с персонажем где то накосячил.
1
0 / 0 / 0
Регистрация: 12.04.2022
Сообщений: 7
12.04.2022, 17:59  [ТС]
Опять не работает

Добавлено через 2 минуты
Хотя кстати твой первый код работает, только он поворачивается в проивоположную сторону, и больше не поворачивается

Добавлено через 2 часа 6 минут
Glitch_70773, друг, первый код рабочий но он не поворачивается больше одного раза, как исправить?
0
566 / 363 / 208
Регистрация: 18.10.2019
Сообщений: 1,231
12.04.2022, 20:12
Лучший ответ Сообщение было отмечено genius111 как решение

Решение

genius111,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using UnityEngine;
 
public class Hero: MonoBehaviour
{
    [SerializeField] private float speed = 3f;
    [SerializeField] private int lives = 5;
    [SerializeField] private float jumpForce = 1.4f;
    private bool Ground = false;
 
    private Rigidbody2D rb;
    private SpriteRenderer sprite;
 
    private void Update()
    {
        Grounded();
        if (Input.GetButton("Horizontal"))
            Run();
        if (Ground && Input.GetButton("Jump"))
            Jump();
        Flip(Input.GetAxis("Horizontal"));
    }
 
    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        sprite = GetComponentInChildren<SpriteRenderer>();
    }
 
    private void Run()
    {
        Vector3 dir = transform.right * Input.GetAxis("Horizontal");
        transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
       // что за реализация передвижения??? это очень плохо, стоит переделать
    }
 
    private void Jump()
    {
        rb.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
    }
 
    private void Grounded()
    {
        Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, 0.1f);
        Ground = collider.Length > 1;
    }
 
    private void Flip(float cudaPovernut)
    {
        transform.localScale = new Vector3(cudaPovernut, 1f, 1f);
    }
}
1
6 / 5 / 1
Регистрация: 10.04.2022
Сообщений: 86
13.04.2022, 07:44
У тебя Sprite Renderer где именно?

Добавлено через 15 минут
C#
1
2
3
4
private void FixedUpdate()
    {
            Run();
    }
Run вызывай в FixedUpdate а из Update все что связано с Run сотри, это к первому скрипту.
1
 Аватар для Алексанierecumi
95 / 60 / 36
Регистрация: 07.08.2013
Сообщений: 241
13.04.2022, 09:28
genius111, а чем вас встроенная функция по развороту спрайта не устраивает?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//=====Alexand ierecumi Youtube=====//
/*Unity 2020.3.26f1 personal <DX11>*/
 
using UnityEngine;
 
public class NewBehaviourScript : MonoBehaviour
{
    private SpriteRenderer _sprite;
 
    void Start()
    {
        _sprite = GetComponent<SpriteRenderer>();
        _sprite.flipX = true;//проверяете Horizontal, если он +1 то false, если -1 то true;
    }
}
Миниатюры
Как отзеркалить персонажа?  
1
0 / 0 / 0
Регистрация: 12.04.2022
Сообщений: 7
14.04.2022, 13:26  [ТС]
Всем спасибо Кто помог!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2022, 13:26
Помогаю со студенческими работами здесь

Как можно отзеркалить массив в матлабе, пользуясь циклами, а не командой flip?
Как можно отзеркалить массив в матлабе, пользуясь циклами, а не командой flip?

Как отзеркалить вид в веб камере? Вебка Logitech hd pro webcam C920
Здравствуйте ребята, на сайте Logitech&quot;а показан скрин с программы Logitech Webcam Properties вот ссылка...

Отзеркалить изображение
Суть - чел нажимает на кнопку и изображение на сайте зеркалится, ф-ция imageflip идёт после версии 5,5, а больше вариантов нет как это...

Отзеркалить изображение
Прошу проверить код, правильно ли написан var imageOrig = jQuery('.pg-detail-image:eq(0)').attr('src'); jQuery('.filtersContainer...

Отзеркалить домен
Сабж. Есть домен, хочу взять еще один и назначить его основным зеркалом сайта. Хотелось бы сделать это, не создавая физически вторую копию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru