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

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

13.03.2016, 14:49. Показов 3555. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
2D режим. UnityJavaScript.

Prefab - спрайт "пули" / Sprite renderer / Rigidbody 2D / BoxCollider 2D / Script ("Fly")
Игрок - спрайт "игрока" / Sprite renderer / Rigidbody 2D / BoxCollider 2D / Script ("Attack")

Attack:
JavaScript
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
#pragma strict
 
public var ammo = 30;
public var timer = 0.0f;
public var reload = 0.0f;
public var bullet : GameObject;
 
var dirEnd: Vector3;
var dirStart: Vector3;
 
function Update () {
    if(timer > 0) timer -= Time.deltaTime;
    if(timer < 0) timer = 0;
    if(timer == 0 ){
        if(Input.GetKeyDown(KeyCode.Mouse0)){
            var bulletInstance: Rigidbody2D = Instantiate(bullet, transform.position, Quaternion.identity) as Rigidbody2D;
            //Physics.IgnoreCollision(bulletInstance.collider, collider);
            dirEnd = Input.mousePosition;
            dirStart = Vector3 (transform.position);
            ammo--;
            timer = 1;
        }
    }
    if (Input.GetKeyDown(KeyCode.R)) {
        timer = 2;
        ammo = 30;
    }
}
Fly:
JavaScript
1
2
3
4
5
6
7
8
9
#pragma strict
public var speed = 10;
 
var dirEnd: Vector3;
var dirStart: Vector3;
 
function Update () {
 
}
Идея:
игроку присоединен скрипт Attack.
игрок находится в позиции x, y. Мышью кликает в позицию x1, y1.
в позиции x, y создается clone пули из prefab.
dirStart запоминает позицию x, y.
dirEnd запоминает позицию x1, y1.
Пуля летит из dirStart до dirEnd и когда достигает цели удаляется.

Вопрос (общий): прикрепленные скрипты вызываются каждый кадр или только функции Update/FixedUpdate? Глобальная переменная не обнулится (каждый кадр)? Локальная переменная обнуляется (каждый кадр)?

К префабу присоединен скрипт Fly - в нем предполагается описать движение "созданного" префаба.
Вопрос: Как передать значения dirEnd/dirStart из скрипта Attack в Fly?

Или как можно реализовать такой полет снаряда?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2016, 14:49
Ответы с готовыми решениями:

Перемещение на другую сторону объекта
Добрый день. Как перенести объект(камеру которая движется) на другую сторону куба(тригера) если он в нее зашел(столкнулся). Думаю может как...

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

Вращение объекта так, чтобы он "смотрел" в сторону курсора мышки
Доброго всем времени суток. Занимаюсь написанием игры, на основе Alien Shooter / Crimson Land. Суть довольно проста, персонаж по центру...

3
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
13.03.2016, 15:11
vino0s,
Цитата Сообщение от vino0s Посмотреть сообщение
прикрепленные скрипты вызываются каждый кадр или только функции Update/FixedUpdate
каждый кадр вызывается Update, FixedUpdate по времени
C#
1
2
3
 GameObject bulletInstance = (GameObject) Instantiate(bullet, transform.position, Quaternion.identity);
bulletInstance.GetComponent<Fly>().dirStart = 
bulletInstance.GetComponent<Fly>().dirEnd =
0
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
13.03.2016, 15:33  [ТС]
Цитата Сообщение от Cr0c Посмотреть сообщение
GameObject bulletInstance = (GameObject) Instantiate(bullet, transform.position, Quaternion.identity);
bulletInstance.GetComponent<Fly>().dirSt art =
bulletInstance.GetComponent<Fly>().dirEn d =
Это писать в Attack - скрипте игрока или Fly - скрипте пули?
Я вот почему вопросом задался - Допустим я отправляю одну пулю в полет, и пока она не долетела я отправляю вторую пулу: при это пули создаются префабом и имя у них будет одинаковым - не выйдет ли при этом, что первая пуля начнет менять своё направление?
Я подумал что мне надо делать так в скрипте Fly:
JavaScript
1
2
3
var bulletInstance: Rigidbody2D = Instantiate(bullet, transform.position, Quaternion.identity) as Rigidbody2D;
bulletInstance.GetComponent.<Attack>().dirStart = Vector2 (x, y);
bulletInstance.GetComponent.<Attack>().dirEnd =  Vector2 (x1, y1);
Но при этом может произойти тот случай что я описал выше.
Если все же надо получать компонент Fly - то я не понял куда это писать вообще? и как использовать.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
13.03.2016, 18:21
vino0s, GameObject.GetComponent
Классы - читайте про экземпляры классов
Цитата Сообщение от vino0s Посмотреть сообщение
Prefab - спрайт "пули" - Script ("Fly")
Логично же, что обращение идет к скрипту пули. Координаты полета пули заданы при создании пули и далее не меняются, значит пуля нормально лететь. Создавая вторую пулю, Вы создаете экземпляр класса Fly в пуле. И не надо инстанцировать ригидбоди, делайте GameObject!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2016, 18:21
Помогаю со студенческими работами здесь

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

Движение в сторону курсора мыши
Как реализовать движение в сторону курсора мыши? Чтобы по нажатию кнопки &quot;W&quot;, спрайт не просто двигался вверх, убавляя координату Y, а...

Сложность с направлением спрайта в сторону курсора
Здравствуйте! Пытаюсь реализовать механку стрельбы в небольшой игре на sfml и столкнулся с проблемой Код (чуть ниже), определяющий...

Направление шарика в сторону курсора мыши
есть шарик с именем mc который можно двигать с помощью клавиатуры.. при нажатии левой кнопки мыши этот шарик стреляет другим шариком и...

Перемещение обьекта в сторону мыши
Напишите пожалуйста код... Есть три объекта, назову их object1, object2, object3. object1 находиться внутри object2 на растоянии и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 10.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 09.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 09.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 09.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 08.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 08.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 08.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru