Поворот оружия в сторону Touch на Unity

160
22 января 2019, 05:20

Каким образом сделать, так чтобы оружие моего персонажа дулом было повернуто в сторону моего пальца (тача) и следило за ним, когда вожу по экрану.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShootPoint : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
    if(Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch(0);
        Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
        touchPosition.z = 0f;
        // transform.localRotation = touchPosition;
        transform.rotation = ????????????
   }
}
}
Answer 1

В Unity у Transform есть метод Transform.LookAt - по названию видно, что он делает :) Поэкспериментируйте с ним. Скорее всего, если у вас 2d игра, вам придётся доворачивать сам объект по какой-то из осей, чтобы он смотрел в экран нужным ребром.

Answer 2

В двумерном случае угол, соответствующий направлению вектора от точки A (персонаж) до точки B (точка, соответствующая касанию):

 Fi = Math.atan2(B.Y - A.Y, B.X - A.X)
Answer 3

Вот такой простенький код получился, если кому понадобится.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShootPoint : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
    }
    // Update is called once per frame
    void Update()
    {
        LookAt();
    }
    void LookAt()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);
            Vector3 touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
            Vector2 direction = new Vector2(touchPosition.x - transform.position.x, touchPosition.y - transform.position.y);
            transform.right = direction;
        }
    }
}
READ ALSO
WPF NotifyIcon. Как привязать метод к LeftClickCommand

WPF NotifyIcon. Как привязать метод к LeftClickCommand

Подскажите, как привязать в TaskbarIcon метод из MainWindow (а не из отдельного класса команд)Пример от разработчика показывает как привязать из отдельного...

174
Редактирование реестра пользователя в \HKEY_USERS\<SID пользователя>\. Загрузка куста пользователя

Редактирование реестра пользователя в \HKEY_USERS\<SID пользователя>\. Загрузка куста пользователя

Необходимо изменить/прочитать/добавить переменную Shell в реестре Windows по пути \HKEY_USERS\\Software\Microsoft\Windows NT\CurrentVersion\Winlogon для каждого пользователяОднако...

159
Как заполнить LIst&lt;int&gt; числами вводимыми через textbox?(c#)

Как заполнить LIst<int> числами вводимыми через textbox?(c#)

Имеется List, в который через форму с textbox-ом надо ввести числаЧисла вводятся в textbox через пробел потом по нажатию нa button добавляются в List

174
Как правильно обрабатывать событие Click в WinForms? C#

Как правильно обрабатывать событие Click в WinForms? C#

Есть форма Form1 и одна единственная кнопка button1

184