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

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2016, 14:49
Ответы с готовыми решениями:

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

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

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

Поворот спрайта в сторону курсора
Делаю игру, надо поворачивать спрайт в сторону курсора мыши, помогите пожалуйста! Вот код: #include...

3
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
13.03.2016, 15:11 2
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  [ТС] 3
Цитата Сообщение от Cr0c Посмотреть сообщение
GameObject bulletInstance = (GameObject) Instantiate(bullet, transform.position, Quaternion.identity);
bulletInstance.GetComponent<Fly>().dirStart =
bulletInstance.GetComponent<Fly>().dirEnd =
Это писать в 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
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
13.03.2016, 18:21 4
vino0s, GameObject.GetComponent
Классы - читайте про экземпляры классов
Цитата Сообщение от vino0s Посмотреть сообщение
Prefab - спрайт "пули" - Script ("Fly")
Логично же, что обращение идет к скрипту пули. Координаты полета пули заданы при создании пули и далее не меняются, значит пуля нормально лететь. Создавая вторую пулю, Вы создаете экземпляр класса Fly в пуле. И не надо инстанцировать ригидбоди, делайте GameObject!
0
13.03.2016, 18:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2016, 18:21
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru