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

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

27.07.2017, 01:00. Показов 2954. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
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
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2017, 21:47
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru