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

Как сделать так, чтобы спрайт поворачивался за курсором?

27.07.2017, 01:00. Показов 2915. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сделать чтобы player поворачивался за курсором? Помогите реализовать пожалуйста)
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
using UnityEngine;
 
 
public class control : MonoBehaviour {
 
    public Transform player;
 
 
    [SerializeField]
    private float speed = 10f;
 
    void OnMouseDrag () {
        if (!playerr.lose) {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
 
 
            player.position = Vector2.MoveTowards (player.position,
                new Vector2 (mousePos.x, player.position.y),
                speed * Time.deltaTime);
            
        }
    }
        
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2017, 01:00
Ответы с готовыми решениями:

Как сделать так, чтобы спрайт отрисовывался с заданной прозрачностью
как сделать так, чтобы спрайт отрисовывался спрайт с заданной прозрачностью?

Как сделать так что массив поворачивался как улитка
Дана задача "Улитка". Ввести число n и заполнить двумерный массив размера 5 х 5 числами 1,2, 3,...

Сделать так, чтобы линия "тянулась" за курсором мыши
Делаю маленький граф редактор. По щелчку мыши задаются начальные координаты, по отпусканию...

Как изменить программу перемещения курсора так, чтобы за курсором тянулся непрерывный шлейф?
uses crt; var ox,oy,x,y:byte; c:char; begin clrscr; repeat c:=ReadKey; if c=#0 then begin...

12
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
27.07.2017, 11:01 2
C#
1
player.up = Camera.main.ScreenToWorldPoint (Input.mousePosition);
0
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
15.09.2017, 22:07  [ТС] 3
Цитата Сообщение от Cr0c Посмотреть сообщение
1
player.up = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Ваш способ не очень мне помогает, спрайт искажается как только хочет, и по оси Z крутится тоже. А мне нужно чтобы только по оси Х, налево и направо поворачивался
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
15.09.2017, 23:13 4
А что, не 2Д?
0
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
16.09.2017, 01:07  [ТС] 5
Цитата Сообщение от Cr0c Посмотреть сообщение
А что, не 2Д?
у меня как раз таки 2д, но когда воспользовался вашим способом он стал как будто 3д
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
16.09.2017, 07:38 6
C#
1
2
3
Vector3 dir = Camera.main.ScreenToWorldPoint (Input.mousePosition);
dir.y = player.position.y;
player.up = dir;
0
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
16.09.2017, 11:11  [ТС] 7
Цитата Сообщение от Cr0c Посмотреть сообщение
Vector3 dir = Camera.main.ScreenToWorldPoint (Input.mousePosition);
dir.y = player.position.y;
player.up = dir;
Неа, все равно тоже самое. Я думаю нужно задать условие типо когда позиция мышь уменьшается по оси Х то спрайт будет повернут влево, а если увеличивается то вправо, это то можно через Localscale сделать, но как записать такое условие?)
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
16.09.2017, 22:07 8
Точно, мой косяк ))
C#
1
2
3
4
Vector3 dir = Camera.main.ScreenToWorldPoint (Input.mousePosition);
dir.y = player.position.y;
dir = dir - player.position;
player.up = dir;
0
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
16.09.2017, 22:59  [ТС] 9
Цитата Сообщение от Cr0c Посмотреть сообщение
Точно, мой косяк ))
C#Выделить код
1
2
3
4
Vector3 dir = Camera.main.ScreenToWorldPoint (Input.mousePosition);
dir.y = player.position.y;
dir = dir - player.position;
player.up = dir;
В принципе тоже самое)))
Даже не знаю может я как то не правильно применил, или вы меня не правильно поняли, но мне нужно чтобы спрайт менял направление, localScale по оси Х нужно менять на отрицательное и обратно,а в этот получается что у него меняется параметр Rotation по оси Z
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
17.09.2017, 16:34 10
PokerV, вначале нужно определиться с ориентацией самого спрайта. Ну допустим спрайт будет смотреть по +y координате, соответственно вектор направления спрайта первоначально будет (0, 1). При апдейте, получаем координаты курсора, вычисляем вектор между позиции курсора и спрайтом, интерполируем между этим вектором, и ориентацией спрайта. Все
0
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
17.09.2017, 17:31  [ТС] 11
Цитата Сообщение от Bretbas Посмотреть сообщение
PokerV, вначале нужно определиться с ориентацией самого спрайта. Ну допустим спрайт будет смотреть по +y координате, соответственно вектор направления спрайта первоначально будет (0, 1). При апдейте, получаем координаты курсора, вычисляем вектор между позиции курсора и спрайтом, интерполируем между этим вектором, и ориентацией спрайта. Все
ну это то понятно, как это все записать в скрипте?)))
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
17.09.2017, 20:30 12
PokerV,
Цитата Сообщение от PokerV Посмотреть сообщение
ну это то понятно, как это все записать в скрипте?)))
е-мое, если ты не знаешь как такое реализовать, то зачем ты вообще раньше времени лезишь в Unity3d? Ну почитай книги немного хоть...
Вот скрипт:
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
using UnityEngine;
using System.Collections;
 
public class RotateObjectScript : MonoBehaviour 
{
    [SerializeField] 
    private float       speed = 10.0f;
 
    private Vector2     currentDirection = new Vector3( 0.0f, 1.0f, 0.0f );
    private Transform   transformObject;
 
    void Awake() 
    {
        transformObject = this.transform;
    }
 
    void Update () 
    {
        Vector2 mousePos    =   Camera.main.ScreenToWorldPoint( Input.mousePosition );
        Vector2 objectPos   =   transformObject.position;
 
        Vector2 direction   =   mousePos - objectPos;
        direction.Normalize();
 
        currentDirection = Vector2.Lerp( currentDirection, direction, Time.deltaTime * speed );
        transformObject.up = currentDirection;
    }
}
Вот видео, специально для тебя сделал, а то может быть опять что-то не поймешь...
1
1 / 1 / 1
Регистрация: 22.05.2017
Сообщений: 35
17.09.2017, 21:47  [ТС] 13
Цитата Сообщение от Bretbas Посмотреть сообщение
е-мое, если ты не знаешь как такое реализовать, то зачем ты вообще раньше времени лезишь в Unity3d? Ну почитай книги немного хоть...
Спасибо огромное, вы лучший!
Я правда пытался это реализовать! только другим способом.

Добавлено через 10 секунд
Цитата Сообщение от Bretbas Посмотреть сообщение
е-мое, если ты не знаешь как такое реализовать, то зачем ты вообще раньше времени лезишь в Unity3d? Ну почитай книги немного хоть...
Спасибо огромное, вы лучший!
Я правда пытался это реализовать! только другим способом.
0
17.09.2017, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2017, 21:47
Помогаю со студенческими работами здесь

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

Как сделать так чтобы страничка при увеличения разрешения не двигалась в разные стороны, и как сделать чтобы при открытии в опере и в других браузерах
все обьекты на странице не двигались в разные стороны???

Как переделать данный код, чтобы при вращении мышью объект ни вращался а поворачивался?
Как мне сделать с помощью DirectInput так чтобы при вращении мышью объект ни вращался а...

Как на надпись ссылкой при наведении курсором сделать чтобы появлялось подчеркивание?
Как на надпись ссылкой при наведении курсором сделать чтобы появлялось подчеркивание и одновременно...


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

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