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

Персонаж должен был делать флип по оси x

31.10.2018, 20:28. Показов 5280. Ответов 8

Студворк — интернет-сервис помощи студентам
Делаю 2D игру. И мой персонаж должен был делать флип по оси x (этот метод прописан на 60 строчке)
Я попытался присвоить это и пулькам которыми стрелял мой персонаж (этот метод прописан на 77 строчке)
Но пули этого делать не хотят.
Помогите пожалуйста.
Если надо могу скинуть доп. материалы.




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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using UnityEngine;
using System.Collections;
 
public class Character : Unit
{
    [SerializeField]
    private int lives = 5;
 
    
 
    [SerializeField]
    private float speed = 3.0F;
    [SerializeField]
    private float jumpForce = 15.0F;
 
    private bool isGrounded = false;
    [SerializeField]
    private Bullet bullet;
 
    private CharState State
    {
        get { return (CharState)animator.GetInteger("State"); }
        set { animator.SetInteger("State", (int)value); }
    }
 
    new private Rigidbody2D rigidbody;
    private Animator animator;
    private SpriteRenderer sprite;
 
    public void Awake()
    {
        
        rigidbody = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        sprite = GetComponentInChildren<SpriteRenderer>();
 
        bullet = Resources.Load<Bullet>("Bullet");
    }
 
    private void FixedUpdate()
    {
        CheckGround();
    }
 
    private void Update()
    {
        if (isGrounded) State = CharState.Idle;
 
        if (Input.GetButtonDown("Fire1")) Shoot();
        if (Input.GetButton("Horizontal")) Run();
        if (isGrounded && Input.GetButtonDown("Jump")) Jump();
    }
 
    private void Run()
    {
        Vector3 direction = transform.right * Input.GetAxis("Horizontal");
 
        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
 
        sprite.flipX = direction.x < 0.0F;
 
        if (isGrounded) State = CharState.Jump;
    }
 
    private void Jump()
    {
        rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
        if (isGrounded) State = CharState.Run;
    }
    
    private void Shoot()
    {
        Vector3 position = transform.position; position.y += 0.8F ;  position.x += 0.5F;
        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
 
        
    newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);
    }
 
  
    private void CheckGround()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.3F);
 
        isGrounded = colliders.Length > 1;
 
        if (!isGrounded) State = CharState.Jump;
    }
 
   
}
 
 
public enum CharState
{
    Idle,
    Run,
    Jump
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2018, 20:28
Ответы с готовыми решениями:

Персонаж ходит только по оси Y
Добрый день,я решил сделать игру про космический корабль, я написал скрипт для корабля, но корабль ходит только по оси Y, ХОТЯ Я ЕМУ...

Персонаж должен летать по пространству
Доброго времени суток! Помогите! using System.Collections; using System.Collections.Generic; using UnityEngine; public class...

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

8
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
31.10.2018, 20:35
Лучший ответ Сообщение было отмечено Klon22800 как решение

Решение

C#
1
newBullet.GetComponent<Sprite>().flipX = sprite.flipX;
0
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 64
01.11.2018, 10:11  [ТС]
Эту строчку нужно вставить в метод shoot?
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
01.11.2018, 10:34
Да...
0
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 64
01.11.2018, 10:35  [ТС]
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
01.11.2018, 12:33
Лучший ответ Сообщение было отмечено Klon22800 как решение

Решение

А, ну да, там SpriteRenderer, а не Sprite))
0
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 64
01.11.2018, 13:58  [ТС]
Можете еще с одним вопросом помочь?

Добавлено через 3 минуты
Суть вот в чем:
Когда я создаю Bullet то он спавнится в указанной мною точке (строчка 3)
Как сделать так чтобы при повороте персонажа эта точка отзеркаливалась.
А то получается так что Bullet вылетает у него за спиной и толкает персонажа.

C#
1
2
3
4
5
6
7
8
private void Shoot()
    {
        Vector2 position = transform.position; position.y += 0.8F ;  position.x += 0.5F;
        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
        newBullet.Direction = newBullet.transform.right * (sprite.flipX ? -1.0F : 1.0F);
        newBullet.GetComponent<SpriteRenderer>().flipX = sprite.flipX;
 
    }
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
01.11.2018, 14:22
C#
1
2
3
4
position.x += sprite.flipX ? 0.5F : -0.5F;
// Или так:
position.x += sprite.flipX ? -0.5F : 0.5F;
// В зависимости как у тебя изначально спрайт повернут.
0
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 64
01.11.2018, 16:49  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2018, 16:49
Помогаю со студенческими работами здесь

Курсач на С++(должен был сдать месяц назад!!(((()
1.Известно, что в Москве самыми теплыми являются дни с 15 июля по 15 августа. Для проведения фестиваля были выбраны 7 следующих подряд...

GetSession(false) должен был вернуть null, а он возвращает сессию
Зравствуйте. Платформа java ee 6, сервер tomcat6. В сервлете прописано: session = getSession(false); if(session != null){ ...

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

Если сервер был Down в то время когда должен выпол. агент
Агент по расписаню. Если сервер был даун когда должен был выполнится агент по времени. Агент вообще не сработает?

Объясните что должен делать руководитель проектов
Добрый день. Извиняюсь за идиотский вопрос. В общем появилась перспектива поработать руководителем проекта (скорее всего небольшого,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru