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

Поворот спрайта противника в unity2d c#

25.09.2020, 07:44. Показов 3470. Ответов 3

Студворк — интернет-сервис помощи студентам
доброго времени суток.
не получается сделать следующее: чтобы объект(спрайт) двигался вправо и влево при этом всегда смотрел налево.
на данный момент он ходит вправо, влево, но при движении влево - смотрит направо.при движении направо смотрит налево(как надо).
скрипт прилагаю.
Boss.cs
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using UnityEngine;
using System.Collections;
using System.Linq;
using UnityEngine.UI;
 
public class Boss : Monster
{
    [SerializeField]
    private float rate = 2.0F;
    [SerializeField]
    private float speed = 1.0F;
    private Vector3 direction;
    private SpriteRenderer sprite;
    [SerializeField]
    private Color bulletColor = Color.black;
    private Bullet bullet;
    [SerializeField]
    public static int Lives = 20; //количество жизней босса, поменять в pausemenu,gameovermenu,mainmenu
    private GameObject Finish;
    public GameObject boss;
    public static Animator animator;
    public Image bar; // Полоска здоровья
    public float fill;
 
 
    public static BossState Stateboss
    {
        get { return (BossState)animator.GetInteger("Stateboss"); }
        set { animator.SetInteger("Stateboss", (int)value); }
    }
 
    void Awake()
    {
        sprite = GetComponentInChildren<SpriteRenderer>();
        bullet = Resources.Load<Bullet>("Bullet");
        animator = GetComponent<Animator>();
    }
 
    void Start()
    {
        direction = transform.right*-1f;
        InvokeRepeating("Shoot", rate, rate);
        Finish = GameObject.Find("Finish");
        Finish.SetActive(false);
        boss = GameObject.Find("Boss");
        fill = 1f;      
    }
 
    void Update()
    {
        Move();
        if (Lives <= 0)
        {
            BossIsDead();
        }
        fill = Lives/20f;
        bar.fillAmount = fill;
    }
    
    private void Shoot()
    {
        if(direction != transform.right){
        Vector3 position = transform.position;          position.y += -0.5F;
        Bullet newBullet = Instantiate(bullet, position, bullet.transform.rotation) as Bullet;
 
        newBullet.Parent = gameObject;
        newBullet.Direction = -newBullet.transform.right;
        newBullet.Color = bulletColor;
        }
    }
    public override void ReceiveDamage()
    {
        Lives--;
        Debug.Log(Lives);
    }
 
    protected override void OnTriggerEnter2D(Collider2D collider)
    {
        Unit unit = collider.GetComponent<Unit>();  // урон от касания
 
        if (unit && unit is Character)
        {
            if (Mathf.Abs(unit.transform.position.x - transform.position.x) < 0.3F) ReceiveDamage();
            else unit.ReceiveDamage();
        }
        
        Bullet bullet = collider.gameObject.GetComponent<Bullet>(); // урон от пули
        if (bullet && bullet.Parent != gameObject)
        {
            ReceiveDamage();
        }
    }
 
    private void Move()
    {
        Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.01F + transform.right * direction.x * 1.3F, 0.1F);
 
        if (colliders.Length > 0 && colliders.All(x => !x.GetComponent<Character>())) {direction *= -1.0F; transform.localScale=new Vector2 (-transform.localScale.x, transform.localScale.y);}
        
        transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
        
        
    }
    void BossIsDead(){
        
        Finish.SetActive(true);
        Stateboss = BossState.bossdead;
        Destroy(boss,1.9F); // исчезновение босса
    }
    
}
public enum BossState
{
    bosswalking,
    bossdead
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2020, 07:44
Ответы с готовыми решениями:

Поворот персонажа Unity2D за курсором
Простой способ поворота персонажа по оси X относительно курсора. Vectro3 MousePos; Vector3 Scale = new Vector3 (Mathf.Abs...

Как сделать поворот объекта в Unity2d
Вот код контроллер персонажа. Нужно чтобы спрайт персонажа разворачивался в сторону куда он идет. Изначально персонаж смотрит направо . ...

Поворот спрайта в сторону курсора
Делаю игру, надо поворачивать спрайт в сторону курсора мыши, помогите пожалуйста! Вот код: #include &lt;SFML/Graphics.hpp&gt; using...

3
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
25.09.2020, 08:20
Зачем вы тогда меняете ему scaleX на 98 строке? Или код не ваш?
0
0 / 0 / 0
Регистрация: 22.09.2020
Сообщений: 8
25.09.2020, 08:36  [ТС]
код мой. без этого он быстро вертится на месте, то вправо,то влево смотрит
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
25.09.2020, 11:57
В предоставленном коде, только фрагмент на 98-ой строке изменяет "разворот" объекта на противоположный.
C#
1
transform.localScale=new Vector2 (-transform.localScale.x, transform.localScale.y);
Других команд, влияющих на "разворот" здесь не видно, либо я их не нашел.

Возможно ещё какой-то скрипт влияет на этот объект и его "разворот".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.09.2020, 11:57
Помогаю со студенческими работами здесь

Реализовать поворот спрайта по направлению нажатия клавиши
Здравствуйте. Как реализовать поворот спрайта по направлению нажатия клавиши?

Unity2D. Как сделать плавный поворот GameObject'a на 90/180 градусов по оси Z, нажимая 1 раз на клавишу?
Уточню еще раз, это вопрос касаемо Unity 2D. Требуется, чтобы при нажатии на клавишу(не удерживании!) gameobject плавно(именно плавно,...

Правильность скрипта попадания пуль; Поворот спрайта "лицом" к игроку
Добрый день! У меня два простеньких вопроса. Первый, как правильнее фиксировать попадание пули в объект, прикрепить скрипт к пуле (если...

Не могу сделать поворот матрицы на каждое нажатие, и её нормальный поворот
var Form1: TForm1; m, n: integer; i, j: byte; b, a: array of integer; implementation uses Unit2, Unit3;

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru