5 / 5 / 0
Регистрация: 07.04.2018
Сообщений: 21
1

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

02.08.2018, 11:55. Показов 590. Ответов 3

Author24 — интернет-сервис помощи студентам
Здраствуйте. Пытаюсь сделать что бы при нажатии на джойстик, у меня крутилась только задняя часть. Но не получается.
Мучаюсь уже около двух часов. Прошу, помогите

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
public class MainTankMoving : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler {
    [SerializeField]
    private Image bgjoystick;
    [SerializeField]
    private Image joystick;
    private Vector2 inputVector;
 
    public GameObject BGjoystick;
    public GameObject joystickk;
 
    public GameObject mainTank;
    public float tankSpeed;
    public float rotationSpeed;
    Vector2 tankmove;
 
    Vector2 inputvectorfake;
    
    void Start()
    {
        inputVector = Vector2.zero;
        bgjoystick = GetComponent<Image>();
        joystick = transform.GetChild(0).GetComponent<Image>();
    }
 
    void FixedUpdate()
    {
        BGjoystick.transform.eulerAngles = new Vector3(0f, 0f, mainTank.transform.rotation.eulerAngles.z);
        joystickk.transform.eulerAngles = new Vector3(0f, 0f, mainTank.transform.rotation.eulerAngles.z - mainTank.transform.rotation.eulerAngles.z);
        tankmove = inputVector;
 
        if (inputVector.y > 0.5f & inputVector.y == 0.5f)
            tankmove.y = 1f ;
        if (inputVector.y < -0.5f & inputVector.y == -0.5f)
            tankmove.y = -1f;
        if (inputVector.y > -0.5f & inputVector.y < 0.5f)
        {
            tankmove = new Vector2(inputVector.x * 2, inputVector.y * 2);
        }
 
        mainTank.transform.Rotate(-Vector3.forward * rotationSpeed * tankmove.x * 0.3f * tankmove.y*3);
        mainTank.transform.Translate(Vector2.up * tankSpeed * tankmove * 0.01f);
    }
 
    public virtual void OnPointerUp (PointerEventData ped)
    {
        tankmove = Vector2.zero;
        inputVector = Vector2.zero;
        joystick.rectTransform.anchoredPosition = Vector2.zero;
    }
 
    public virtual void OnPointerDown(PointerEventData ped)
    {
        OnDrag(ped);
    }
 
    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle(bgjoystick.rectTransform, ped.position, ped.pressEventCamera, out pos))
        {
            pos.x = (pos.x / joystick.rectTransform.sizeDelta.x);
            pos.y = (pos.y / joystick.rectTransform.sizeDelta.y);
 
            inputVector = new Vector2(pos.x*2,pos.y*2);
            inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;
 
            joystick.rectTransform.anchoredPosition = new Vector2(inputVector.x * (bgjoystick.rectTransform.sizeDelta.x / 2), inputVector.y * (bgjoystick.rectTransform.sizeDelta.y / 2));
        }
    }
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2018, 11:55
Ответы с готовыми решениями:

Как сделать, чтобы фон оставался активным?
Добрый день, как сделать чтобы фон оставался активным после нажатия мышки &lt;ul&gt; &lt;li&gt;&lt;a...

Как сделать, чтобы Status bar растягивался вместе с формой и оставался внизу?
Создаю так hsb = CreateStatusWindow(WS_CHILD| WS_VISIBLE, L&quot;&quot;, hwnd, 4000);

Как сделать так чтобы фон оставался на месте, а прокручивались блоки сайта
Пытаюсь сделать так чтобы фон оставался на месте и не повторялся, а двигались только (как бы это...

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

3
34 / 35 / 12
Регистрация: 04.03.2017
Сообщений: 444
02.08.2018, 19:06 2
JediMan, как-то мало инфы. Если хочешь чтобы крутилась только задняя часть (Чего? я так понимаю это будет gameobject, получить потомка можно функцией родителя (начни набирать child, а потом по сигнатурам сам сориентируйся, я не помню), зная его имя, тег), то выполняй Rotate для компонента transform потомка, а не родителя. Если это не то, что тебе нужно, то будь добр - больше инфы.
0
5 / 5 / 0
Регистрация: 07.04.2018
Сообщений: 21
02.08.2018, 19:49  [ТС] 3
Мне нужно, что бы вращался только родитель.
0
34 / 35 / 12
Регистрация: 04.03.2017
Сообщений: 444
03.08.2018, 22:50 4
JediMan, нууу смотри. Можно сделать такой костыль: все части танка, обернуть в пустой gameObject, тогда вращение танка в целом делай через него, а если нужно повернуть конкретную часть, то и применяй метод Rotate к компоненту transform этой части. GameObject -> CreateEmpty (это если ты не знаешь, как создаются пустые gameObjectы. Они всего лишь контейнеры с компонентом transform по умолчанию. Все, что есть работает так: пустой gameObject + скрипты-компоненты + другие gameObject в списке его иерархии). Если хочешь чего-то более конкретного от меня, то давай скрины сцены, и от себя больше напиши про игровой процесс.

Добавлено через 2 минуты
Цитата Сообщение от JediMan Посмотреть сообщение
Мне нужно, что бы вращался только родитель.
Это невозможно ведь логика такова, что родитель - это точка отсчета для всех вложенных объектов, поэтому вращается она, вращается вся система иерархии, перемещается она - перемещается вся система за ней. В таком случае можно только родителя сменить, и собственно, что я и предложил в качестве обертки пустой gameObject.

Добавлено через 21 минуту
Цитата Сообщение от JediMan Посмотреть сообщение
C#
1
2
3
4
private Image joystick;
 private Vector2 inputVector;
 public GameObject BGjoystick;
 public GameObject joystickk;
Назови спрайт джойстика _joystick, а лучше даже _joystickImage. Черта снизу это требование к приватным переменным, позволяет избежать конфликтов имен, как у тебя, например.
0
03.08.2018, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2018, 22:50
Помогаю со студенческими работами здесь

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

Как сделать, чтобы при вставке текста он не прокручивался вниз а оставался на первой строчке?
Здравствуйте! Хочу спросить совета у знающих людей, возможно кто-то поможет (хотя я уже мало...

Сделать статичным nav
Как я могу запилить статичный nav? Я про то, что когда скроллим страницу, то nav должен стоять на...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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