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

Перемещение объекта при соприкосновении с другим объектом

24.10.2020, 21:42. Показов 2070. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане. Сейчас занимаюсь изучением Unity. В процессе создания игры возникла проблема.
Мне необходимо переместить объект вправо по оси x в зависимости от времени удержания кнопки.
Нажимая и удерживая одну кнопку, отклоняется один предмет. Как только отпускаем он движется вперед и соприкасается с другим объектом, который необходимо переместить.
Но сделать это не получается. В чем ошибка?
Код:
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
 Vector3 vecRot;
    Vector3 oldRot;
    Vector2 oldPos;
    public Rigidbody2D rbody;
    float r,time;
    bool hook,canImp = false;
    public GameObject btn, nail;
    public float imp;
    
 
    private void Start()
    {
        oldPos = rbody.transform.position;
        oldRot = Vector3.zero;
        gameObject.GetComponent<BoxCollider2D>().enabled = false;
    }
    private void Update()
    {
        
        if (Input.GetMouseButtonDown(0) && btn.GetComponent<Btn>().isPressed == true)
        {
            time = Time.time;
          //  StartCoroutine(waiting());
            hook = false;
            rbody.velocity = Vector2.zero;
            rbody.angularVelocity = 0f;
            rbody.transform.position = oldPos;
            r = 70f;
            StartCoroutine("action");
            
        }
        if (Input.GetMouseButtonUp(0) && btn.GetComponent<Btn>().isPressed == false)
        {
            gameObject.GetComponent<BoxCollider2D>().enabled = true;
            // imp = transform.localRotation.z;
            imp = (Time.time-time)*10f;
            hook = true;
            transform.rotation = Quaternion.Euler(oldRot);
           
        }
    }
    IEnumerator action()
    {
        for (int i = 0; i < r; i++)
        {
            if (hook ==false)
            {
                vecRot = new Vector3(0f, 0f, i);
                transform.rotation = Quaternion.Euler(vecRot);
                yield return new WaitForSeconds(0.01f);
            }
            else
            {
               yield break;
            }
        }
    }
    private void FixedUpdate()
    {
        if (canImp)
            nail.transform.position = new Vector3(nail.transform.position.x * imp, nail.transform.position.y, nail.transform.position.z);
    }
    IEnumerator waiting()
    {
        yield return new WaitForSeconds(0.001f);
    }
 
     void OnCollisionEnter2D(Collision2D collision)
    {
        
        if (collision.gameObject.tag == "Nail") {
            print("col");
            //   rb.AddForce(transform.right * collision.gameObject.GetComponent<Rigidbody2D>().mass * speed, ForceMode2D.Impulse);
            canImp = true;
        }
           
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.10.2020, 21:42
Ответы с готовыми решениями:

Изменение цвета объекта при контакте с другим объектом
Подскажите пожалуйста, как в Actionscript 3.0 задать цвет через код, есть 2 объекта box и triangle, при контакте объекта box с triangle...

Как остановить передвижение объекта при столкновении с другим объектом
Как остановить передвижение объекта при столкновении с другим объектом при движении вправо, влево Код передвижения вправо (первый...

Как присвоить значение одного объекта в метод вызванный другим объектом, при том что они в одном классе
Здравствуйте, суть задания такова, создать конструктор без параметра который заполняет 10 элементов множества, и с параметром который...

1
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,073
28.10.2020, 09:15
Там павда на чаваскрипте но суть будет понятна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2020, 09:15
Помогаю со студенческими работами здесь

Исчезновение круга при соприкосновении с другим
Уже вторую неделю думаю но только криво получается. По идеи должно получится как в agar.io

Игра на Canvas как реализовать гравитацию и действие(событие) при соприкосновении с объектом
Как реализовать гравитацию и действие(событие) при соприкосновении с объектом. Хочу реализовать что то вроде марио. 1) Вообще смутно...

Действие происходящее при соприкосновении с другим элементом
Программирование C# WinForms Есть pictureBox. Оно меняет локацию и ложится на другое изображение Необходимо чтобы когда оно ляжет на...

Столкновение объекта с другим объектом. Его поведение
Доброго времени суток. Как сделать так, чтобы объект при соприкосновении с каким - то другим объектом (например с поверхностью, парящей в...

Как проверить столкновение объекта с другим объектом проверяя тег (я новичок)
Проблема такая. У меня есть шар и шип, при столкновении шара с шипом должно происходить какое либо событие. Но шип должен быть с...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru