GUI.Window
Shmel Дата: Сб, 07 Апр 2012, 15:13 | Сообщение # 1
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Добрый день! У меня такой вопрос: у меня есть окно (GUI.Window ), его можно таскать, изменять размер двумя пальцами, так вот, размер можно изменять если пальцы находятся вне окна вот пример: Как можно реализовать что если пальцы находятся на окне то изменяем размер? я думаю что нужно использовать Contains , но вот какой оператор использовать? Есть код: Code
if(b) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } }
Сообщение Добрый день! У меня такой вопрос: у меня есть окно (GUI.Window ), его можно таскать, изменять размер двумя пальцами, так вот, размер можно изменять если пальцы находятся вне окна вот пример: Как можно реализовать что если пальцы находятся на окне то изменяем размер? я думаю что нужно использовать Contains , но вот какой оператор использовать? Есть код: Code
if(b) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } }
Автор - Shmel Дата добавления - 07 Апр 2012 в 15:13
Hunjeth Дата: Сб, 07 Апр 2012, 16:45 | Сообщение # 2
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
я не проверял посмотри тут http://answers.unity3d.com/questio....en.html
Shmel Дата: Сб, 07 Апр 2012, 16:55 | Сообщение # 3
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
InvalidProgramException: Invalid IL code in gag:DoMyWindow4 (int): IL_0096: cgt.un Code
var touch1 = Input.GetTouch(0); ... if (windowRect1.Contains(touch1.position)) { GUI.DragWindow (Rect(0,0,0,0)); }
Не работает, хотя я раньше пытался подобного сделать, не получалось, может вы проверите?
Сообщение InvalidProgramException: Invalid IL code in gag:DoMyWindow4 (int): IL_0096: cgt.un Code
var touch1 = Input.GetTouch(0); ... if (windowRect1.Contains(touch1.position)) { GUI.DragWindow (Rect(0,0,0,0)); }
Не работает, хотя я раньше пытался подобного сделать, не получалось, может вы проверите? Автор - Shmel Дата добавления - 07 Апр 2012 в 16:55
Левша Дата: Сб, 07 Апр 2012, 16:59 | Сообщение # 4
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
К сожалению с мобильными платформами и с Touch вообще пока работать не приходилось...
X.cor.R (Prologue)
Сообщение К сожалению с мобильными платформами и с Touch вообще пока работать не приходилось... Автор - Левша Дата добавления - 07 Апр 2012 в 16:59
Hunjeth Дата: Сб, 07 Апр 2012, 17:11 | Сообщение # 5
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
у тебя touch1 = float а должно быть vector3 или vector2 Добавлено (07.04.2012, 17:11) --------------------------------------------- Code
Например //x,y,z var touch1 = Vector3(-2, Input.GetTouch(0), Input.GetTouch(1)); Я может перепутал местами Input.GetTouch
Сообщение отредактировал Hunjeth - Сб, 07 Апр 2012, 17:13
Сообщение у тебя touch1 = float а должно быть vector3 или vector2 Добавлено (07.04.2012, 17:11) --------------------------------------------- Code
Например //x,y,z var touch1 = Vector3(-2, Input.GetTouch(0), Input.GetTouch(1)); Я может перепутал местами Input.GetTouch
Автор - Hunjeth Дата добавления - 07 Апр 2012 в 17:11
Shmel Дата: Сб, 07 Апр 2012, 17:14 | Сообщение # 6
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
var touch1 = Vector2(Input.GetTouch(0), Input.GetTouch(1)); BCE0024: The type 'UnityEngine.Vector2' does not have a visible constructor that matches the argument list '(UnityEngine.Touch, UnityEngine.Touch)'. Не так, а как тогда? Изменил, что то все так же, только ошибка другая...
Сообщение отредактировал Shmel - Сб, 07 Апр 2012, 17:18
Сообщение var touch1 = Vector2(Input.GetTouch(0), Input.GetTouch(1)); BCE0024: The type 'UnityEngine.Vector2' does not have a visible constructor that matches the argument list '(UnityEngine.Touch, UnityEngine.Touch)'. Не так, а как тогда? Изменил, что то все так же, только ошибка другая... Автор - Shmel Дата добавления - 07 Апр 2012 в 17:14
Hunjeth Дата: Сб, 07 Апр 2012, 17:18 | Сообщение # 7
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
так убери position это и так position получаеться ты написал touch1(position).position Добавлено (07.04.2012, 17:18) --------------------------------------------- position используеться если ты написал - var touch1 : Transform; попробуй Vector3
Сообщение отредактировал Hunjeth - Сб, 07 Апр 2012, 17:20
Сообщение так убери position это и так position получаеться ты написал touch1(position).position Добавлено (07.04.2012, 17:18) --------------------------------------------- position используеться если ты написал - var touch1 : Transform; попробуй Vector3 Автор - Hunjeth Дата добавления - 07 Апр 2012 в 17:18
Shmel Дата: Сб, 07 Апр 2012, 17:23 | Сообщение # 8
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
var touch1 = Vector2(Input.GetTouch(0), Input.GetTouch(1)); if (windowRect1.Contains(touch1)) { GUI.DragWindow (Rect(0,0,0,0)); } BCE0024: The type 'UnityEngine.Vector2' does not have a visible constructor that matches the argument list '(UnityEngine.Touch, UnityEngine.Touch)'. Уже близок я Но что то опять не то... Добавлено (07.04.2012, 17:23) --------------------------------------------- Assets/Scripts/gag.js(20,21): BCE0024: The type 'UnityEngine.Vector3' does not have a visible constructor that matches the argument list '(int, UnityEngine.Touch, UnityEngine.Touch)'. - это с третим А вообще я использую только 2 измерения, думаю мне нужен vector2 только.
Сообщение var touch1 = Vector2(Input.GetTouch(0), Input.GetTouch(1)); if (windowRect1.Contains(touch1)) { GUI.DragWindow (Rect(0,0,0,0)); } BCE0024: The type 'UnityEngine.Vector2' does not have a visible constructor that matches the argument list '(UnityEngine.Touch, UnityEngine.Touch)'. Уже близок я Но что то опять не то... Добавлено (07.04.2012, 17:23) --------------------------------------------- Assets/Scripts/gag.js(20,21): BCE0024: The type 'UnityEngine.Vector3' does not have a visible constructor that matches the argument list '(int, UnityEngine.Touch, UnityEngine.Touch)'. - это с третим А вообще я использую только 2 измерения, думаю мне нужен vector2 только.
Автор - Shmel Дата добавления - 07 Апр 2012 в 17:23
Hunjeth Дата: Сб, 07 Апр 2012, 17:28 | Сообщение # 9
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
лол if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { } я забыл что Input.GetTouch(0).position это и есть вектор
Сообщение отредактировал Hunjeth - Сб, 07 Апр 2012, 17:36
Сообщение лол if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { } я забыл что Input.GetTouch(0).position это и есть вектор Автор - Hunjeth Дата добавления - 07 Апр 2012 в 17:28
Shmel Дата: Сб, 07 Апр 2012, 17:33 | Сообщение # 10
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Изначально гуиДраг у меня стоит ...(); то есть двигается куда угодно. Но как только я начинаю изменять размер окна, он должен становится ...(Rect(0,0,0,0)) чтобы не дергалось окно. Вот пытаюсь добиться: Если мы дотронулись двумя пальцами, и если пальцы двигаются по экрану, то виндовРект увеличиваем размеры, и окно не двигается. Но это никак не получается.
Сообщение Изначально гуиДраг у меня стоит ...(); то есть двигается куда угодно. Но как только я начинаю изменять размер окна, он должен становится ...(Rect(0,0,0,0)) чтобы не дергалось окно. Вот пытаюсь добиться: Если мы дотронулись двумя пальцами, и если пальцы двигаются по экрану, то виндовРект увеличиваем размеры, и окно не двигается. Но это никак не получается. Автор - Shmel Дата добавления - 07 Апр 2012 в 17:33
Hunjeth Дата: Сб, 07 Апр 2012, 17:41 | Сообщение # 11
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
В UpdateQuote
transform.position = Vector3(Mathf.Lerp(transform.position.x, 0, 0.1), Mathf.Lerp(transform.position.y, 0, 0.1), Mathf.Lerp(transform.position.z, 0, 0.1));
Сообщение отредактировал Hunjeth - Сб, 07 Апр 2012, 17:45
Сообщение В UpdateQuote
transform.position = Vector3(Mathf.Lerp(transform.position.x, 0, 0.1), Mathf.Lerp(transform.position.y, 0, 0.1), Mathf.Lerp(transform.position.z, 0, 0.1));
Автор - Hunjeth Дата добавления - 07 Апр 2012 в 17:41
Shmel Дата: Сб, 07 Апр 2012, 19:19 | Сообщение # 12
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
UnityException: Index out of bounds. gag.DoMyWindow4 (Int32 windowID) (at Assets/Scripts/gag.js:57) UnityEngine.GUI+_Window.Do () (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUI.cs:985) UnityEngine.GUI.EndWindows (UnityEngine.IDList idlist) (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUI.cs:1257) UnityEngine.GUIUtility.EndGUI (Int32 doLayout, Int32 doWindows, UnityEngine.IDList idlist) (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUIUtility.cs:359) Это вот с Code
if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { }
На всякий случай: Code
function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2)//если дабл клик { b = true; // активируем b a = false; } else if(b) // если b тру { GUI.DragWindow (); //Можно двигать окно if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) // изменять размеры окна { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { // ? GUI.DragWindow(Rect(0,0,0,0)); } }
Добавлено (07.04.2012, 18:52) --------------------------------------------- Что же ей опять не хватает?
Добавлено (07.04.2012, 19:13) ---------------------------------------------
Code
function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { b = true; a = false; } if(b) { if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } }
Переставил так, ошибок нет, но только теперь непонятно, окно дергается(то исчезнет, то появится), не двигается, хотя не, двигается но непонятно когда, размер изменяется...Добавлено (07.04.2012, 19:19) --------------------------------------------- Вру, те же самые ошибки...
Сообщение отредактировал Shmel - Сб, 07 Апр 2012, 17:48
Сообщение UnityException: Index out of bounds. gag.DoMyWindow4 (Int32 windowID) (at Assets/Scripts/gag.js:57) UnityEngine.GUI+_Window.Do () (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUI.cs:985) UnityEngine.GUI.EndWindows (UnityEngine.IDList idlist) (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUI.cs:1257) UnityEngine.GUIUtility.EndGUI (Int32 doLayout, Int32 doWindows, UnityEngine.IDList idlist) (at C:/BuildAgent/work/6bc5f79e0a4296d6/Runtime/ExportGenerated/Editor/GUIUtility.cs:359) Это вот с Code
if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { }
На всякий случай: Code
function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2)//если дабл клик { b = true; // активируем b a = false; } else if(b) // если b тру { GUI.DragWindow (); //Можно двигать окно if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) // изменять размеры окна { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { // ? GUI.DragWindow(Rect(0,0,0,0)); } }
Добавлено (07.04.2012, 18:52) --------------------------------------------- Что же ей опять не хватает?
Добавлено (07.04.2012, 19:13) ---------------------------------------------
Code
function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { b = true; a = false; } if(b) { if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } }
Переставил так, ошибок нет, но только теперь непонятно, окно дергается(то исчезнет, то появится), не двигается, хотя не, двигается но непонятно когда, размер изменяется...Добавлено (07.04.2012, 19:19) --------------------------------------------- Вру, те же самые ошибки...
Автор - Shmel Дата добавления - 07 Апр 2012 в 19:19
Hunjeth Дата: Сб, 07 Апр 2012, 19:57 | Сообщение # 13
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
1 - b = true; замени на то что относиться к b. 2 - в начале функции напиши var inpgt0 = Input.GetTouch(0).position 3 - в начале функции напиши var inpgt1 = Input.GetTouch(1).position 4 - замени все фразы на inpgt0 и inpgt1 так ты получишь то когда ты нажал он не будет проверять по центру опции нажата ли кнопка и поможет избежать все баги с нажатием вот пример Code
function DoMyWindow4 (windowID : int) { var inpgt0 = Input.GetTouch(0).position; var inpgt1 = Input.GetTouch(1).position; var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { if (windowRect1.Contains(inpgt0) || windowRect1.Contains(inpgt1)) { GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow(); distanceOld = distance; distance = Vector2.Distance(inpgt0, inpgt1); if (distance < distanceOld ) { windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) { windowRect1.width += 5; windowRect1.height += 5; } if (a != false) a = false; } }
Сообщение отредактировал Hunjeth - Сб, 07 Апр 2012, 20:07
Сообщение 1 - b = true; замени на то что относиться к b. 2 - в начале функции напиши var inpgt0 = Input.GetTouch(0).position 3 - в начале функции напиши var inpgt1 = Input.GetTouch(1).position 4 - замени все фразы на inpgt0 и inpgt1 так ты получишь то когда ты нажал он не будет проверять по центру опции нажата ли кнопка и поможет избежать все баги с нажатием вот пример Code
function DoMyWindow4 (windowID : int) { var inpgt0 = Input.GetTouch(0).position; var inpgt1 = Input.GetTouch(1).position; var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { if (windowRect1.Contains(inpgt0) || windowRect1.Contains(inpgt1)) { GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow(); distanceOld = distance; distance = Vector2.Distance(inpgt0, inpgt1); if (distance < distanceOld ) { windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) { windowRect1.width += 5; windowRect1.height += 5; } if (a != false) a = false; } }
Автор - Hunjeth Дата добавления - 07 Апр 2012 в 19:57
Shmel Дата: Вт, 10 Апр 2012, 17:17 | Сообщение # 14
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Та же самая ошибка 1 - b = true; замени на то что относиться к b. у меня просто несколько окон, я "b" использую как 1 окно, "a" использую как второе окно.. Поэтому если сделали дабл клик то катаем первое окно, на другом окне сделали дабл клик другое окно катаем а первое нет. Полный код
var myTouch : Touch; // прикосновение 1 var myTouch2 : Touch; // прикосновение 2 var distance : int; //дистанция между прикосновениями var distanceOld : int; //предыдущая дистанция между прикосновениями var sx = 100; var windowRect0 = Rect (0, 0, 0, 0); var windowRect1 = Rect (200, 200, 200, 200); var vs : Texture; var vsm : Texture; var custom : GUIStyle; var a = false; var b = false; var touchPosition : Vector2; private var mousePos : Vector2; var e : Event = Event.current; function start() { } function OnGUI() { windowRect0 = GUI.Window (1,windowRect0, DoMyWindow5, vs); windowRect1 = GUI.Window (2,windowRect1, DoMyWindow4, vsm); } function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { b = true; a = false; } if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } if(b) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } } function DoMyWindow5 (windowID : int) { //Рот3 var e : Event = Event.current; if( windowRect0.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { a = true; b = false; } if (windowRect0.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } if(a) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect0.width -= 5; windowRect0.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect0.width += 5; windowRect0.height += 5; } } } function Update () { mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); transform.localPosition = Vector3(Mathf.Lerp(transform.localPosition.x, 0, 0.1), Mathf.Lerp(transform.localPosition.y, 0, 0.1), Mathf.Lerp(transform.localPosition.z, 0, 0.1)); }
Добавлено (08.04.2012, 22:10) --------------------------------------------- Я делаю что-то не правильно?
Добавлено (10.04.2012, 16:21) ---------------------------------------------
Code
function DoMyWindow5 (windowID : int) { var e : Event = Event.current; if(windowRect0.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { a = true; b = false; } if(a) { if (windowRect0.Contains(inpgt0) || windowRect0.Contains(inpgt1) ||windowRect0.Contains(inpgt0) || windowRect0.Contains(inpgt1) || Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow(); distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { windowRect0.width -= 5; windowRect0.height -= 5; } if (distance > distanceOld ) { windowRect0.width += 5; windowRect0.height += 5; } } }
Добавлено (10.04.2012, 17:17) ---------------------------------------------http://www.youtube.com/watch?v=2BUwQ26hda8&feature=player_embedded вот даже видео есть.
Сообщение Та же самая ошибка 1 - b = true; замени на то что относиться к b. у меня просто несколько окон, я "b" использую как 1 окно, "a" использую как второе окно.. Поэтому если сделали дабл клик то катаем первое окно, на другом окне сделали дабл клик другое окно катаем а первое нет. Полный код
var myTouch : Touch; // прикосновение 1 var myTouch2 : Touch; // прикосновение 2 var distance : int; //дистанция между прикосновениями var distanceOld : int; //предыдущая дистанция между прикосновениями var sx = 100; var windowRect0 = Rect (0, 0, 0, 0); var windowRect1 = Rect (200, 200, 200, 200); var vs : Texture; var vsm : Texture; var custom : GUIStyle; var a = false; var b = false; var touchPosition : Vector2; private var mousePos : Vector2; var e : Event = Event.current; function start() { } function OnGUI() { windowRect0 = GUI.Window (1,windowRect0, DoMyWindow5, vs); windowRect1 = GUI.Window (2,windowRect1, DoMyWindow4, vsm); } function DoMyWindow4 (windowID : int) { //Рот3 var e : Event = Event.current; if(windowRect1.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { b = true; a = false; } if (windowRect1.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } if(b) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect1.width -= 5; windowRect1.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect1.width += 5; windowRect1.height += 5; } } } function DoMyWindow5 (windowID : int) { //Рот3 var e : Event = Event.current; if( windowRect0.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { a = true; b = false; } if (windowRect0.Contains(Input.GetTouch(0).position) || windowRect1.Contains(Input.GetTouch(1).position)) { GUI.DragWindow(Rect(0,0,0,0)); } if(a) { GUI.DragWindow (); if(Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); } distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { //сдвинуть пальцы windowRect0.width -= 5; windowRect0.height -= 5; } if (distance > distanceOld ) {//раздвинуть пальцы windowRect0.width += 5; windowRect0.height += 5; } } } function Update () { mousePos = new Vector2(Input.mousePosition.x, Screen.height - Input.mousePosition.y); transform.localPosition = Vector3(Mathf.Lerp(transform.localPosition.x, 0, 0.1), Mathf.Lerp(transform.localPosition.y, 0, 0.1), Mathf.Lerp(transform.localPosition.z, 0, 0.1)); }
Добавлено (08.04.2012, 22:10) --------------------------------------------- Я делаю что-то не правильно?
Добавлено (10.04.2012, 16:21) ---------------------------------------------
Code
function DoMyWindow5 (windowID : int) { var e : Event = Event.current; if(windowRect0.Contains(mousePos) && e.isMouse && e.type == EventType.MouseDown && e.clickCount == 2) { a = true; b = false; } if(a) { if (windowRect0.Contains(inpgt0) || windowRect0.Contains(inpgt1) ||windowRect0.Contains(inpgt0) || windowRect0.Contains(inpgt1) || Input.touchCount == 2 &&Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved ) { myTouch = Input.GetTouch(0); myTouch2 = Input.GetTouch(1); GUI.DragWindow(Rect(0,0,0,0)); } GUI.DragWindow(); distanceOld = distance; distance = Vector2.Distance(myTouch.position, myTouch2.position); if (distance < distanceOld ) { windowRect0.width -= 5; windowRect0.height -= 5; } if (distance > distanceOld ) { windowRect0.width += 5; windowRect0.height += 5; } } }
Добавлено (10.04.2012, 17:17) ---------------------------------------------http://www.youtube.com/watch?v=2BUwQ26hda8&feature=player_embedded вот даже видео есть.
Автор - Shmel Дата добавления - 10 Апр 2012 в 17:17
Hunjeth Дата: Ср, 11 Апр 2012, 08:05 | Сообщение # 15
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
Вот может тут есть http://cssmodeling.ucoz.lv/load....1-0-237 По полному описанию я так понял там есть то что надо.
Shmel Дата: Пт, 13 Апр 2012, 16:28 | Сообщение # 16
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Не работает... ошибка установки пакета
Сообщение Не работает... ошибка установки пакета Автор - Shmel Дата добавления - 13 Апр 2012 в 16:28
seaman Дата: Пт, 13 Апр 2012, 16:44 | Сообщение # 17
Гуру
Сообщений: 1748
Награды:
10
Репутация:
660
Статус: Offline
Quote
Не работает... ошибка установки пакета
Версия Юнити? У меня в 3.4.2.f3 все прекрасно импортируется.
Сообщение Quote
Не работает... ошибка установки пакета
Версия Юнити? У меня в 3.4.2.f3 все прекрасно импортируется.Автор - seaman Дата добавления - 13 Апр 2012 в 16:44
Hunjeth Дата: Пт, 13 Апр 2012, 16:50 | Сообщение # 18
Сообщений: 354
Награды:
1
Репутация:
112
Статус: Offline
у тебя в пути к файлу русские буквы наверно : было тоже такое
Сообщение отредактировал Hunjeth - Пт, 13 Апр 2012, 16:51
Сообщение у тебя в пути к файлу русские буквы наверно : было тоже такое Автор - Hunjeth Дата добавления - 13 Апр 2012 в 16:50
Shmel Дата: Пт, 13 Апр 2012, 23:14 | Сообщение # 19
Сообщений: 12
Награды:
0
Репутация:
0
Статус: Offline
Действительно, работает. Но хотелось бы свой вариант доработать. Может есть способ?
Сообщение Действительно, работает. Но хотелось бы свой вариант доработать. Может есть способ? Автор - Shmel Дата добавления - 13 Апр 2012 в 23:14