|
Название: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 18, 2012, 23:33:03 Здравствуйте sm_hi3
помогите пожалуйста сделать прицел на Unity3d, который бы увеличивался плавно во время стрельбы. Я уже как только не пытался его делать, я и создавал листинговый массив, в который добавлял элементы изображений, а потом рисовал GUI текстуру, но не получилось, так как рисовалось множество прицелов сразу. Создавал переменную, на которую умножал размеры спрайта, прицел вроде как увеличивался но это выглядило не красиво :facepalm_2: Подскажите пожалуйста более работающий способ создания плавного увеличения прицела? Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 19, 2012, 09:45:33 Всё просто. текстура должна быть квадратом 50х50.
Создай скрипт Crosshair.cs. Вот набросал код: Код: using UnityEngine; using System.Collections; public class Crosshair : MonoBehaviour { public Texture2D tx; public float maxSize = 100.0F; public float minSize = 20.0F; public float changeSpeed = 0.5F; float tempRange = 0.0F; void Max() { if(tempRange < maxSize) { tempRange+=changeSpeed; } } void Min() { if(tempRange > 0) { tempRange-=changeSpeed; } } void OnGUI() { GUI.Box(new Rect(Screen.width/2-200-tempRange, Screen.height/2, 120, 40), tx); GUI.Box(new Rect(Screen.width/2+200+tempRange, Screen.height/2, 120, 40), tx); GUI.Box(new Rect(Screen.width/2, Screen.height/2-200-tempRange, 120, 40), tx); GUI.Box(new Rect(Screen.width/2, Screen.height/2+200+tempRange, 120, 40), tx); } } Добавлено: Ноябрь 19, 2012, 09:53:23 Теперь скажу как юзать: Если скрипт оружия на шарпе: Код: public Crosshair cros; ////// при выстреле cros.Max(); ////// при отпускании мыши. cros.Min(); если на яве, Код: var cros : GameObject; ////// при выстреле cros.SendMessage("Max"); ////// при отпускании мыши. cros.SendMessage("Min"); Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 19, 2012, 19:44:03 Спасибо, всё работает, только пришлось подправить с размерами и вместо Код: GUI.Box(...); прописалКод: GUI.DrawTexture sm:)Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 19, 2012, 19:45:20 Спасибо, всё работает, только пришлось подправить с размерами и вместо Код: GUI.Box(...); прописалКод: GUI.DrawTexture sm:)Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 19, 2012, 19:57:58 Спасибо, всё работает, только пришлось подправить с размерами и вместо Код: GUI.Box(...); прописалКод: GUI.DrawTexture sm:)Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 19, 2012, 20:01:32 Я же сказал, что нужен белый квадрат, 50 на 50.
Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 19, 2012, 20:08:13 ай, блин, это я слегка протупил :facepalm_2:
но вроде тоже нечего так получилось Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 19, 2012, 20:10:49 ай, блин, это я слегка протупил :facepalm_2: Ну вот, видишь :)но вроде тоже нечего так получилось Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 19, 2012, 20:22:19 Спасибо :-))
Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 19, 2012, 20:24:04 Спасибо :-)) Не за что! sm_goodНазвание: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 20, 2012, 21:03:48 а можете ещё подсказать? sm:)
когда я деактивирую объект при помощи Код: Объект.SetActiveRecursively(false); и активируюКод: Объект.SetActiveRecursively(true); как туда "впихнуть" анимацию, например, анимация "Оружие опускается" проиграла и объект деактивируется.в каком событие мне анимацию лучше прописать? Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 21, 2012, 19:01:42 как пример:
Код: void Hide() { animation.CrossFade("hide"); yield WaitForSeconds(1); Объект.SetActiveRecursively(false); } Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 21, 2012, 21:43:21 как пример: Код: void Hide() { animation.CrossFade("hide"); yield WaitForSeconds(1); Объект.SetActiveRecursively(false); } спасибо sm_good Добавлено: Ноябрь 21, 2012, 21:50:38 а как реализовать обмен значений между листинговыми массивами? например Код: _List[1] = 3; _List[2] = 1; _List[1] меняется_значением с _List[2]; просто пишу алгоритм сортировки по дистанции и использую известный "алгоритм Пузырька" sm:) Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 22, 2012, 09:44:49 Листы на шарпе? добавлять в элемент ? то так: Код: public List<GameObject> lst = new List<GameObject>(); ///// lst.Add(gameObject); /// p.s: Посмотри список методов класса в справке. там всё есть. Название: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 22, 2012, 15:34:26 Листы на шарпе? добавлять в элемент ? то так: Код: public List<GameObject> lst = new List<GameObject>(); ///// lst.Add(gameObject); /// p.s: Посмотри список методов класса в справке. там всё есть. это я написал, потом скрипт у меня находит объекты с определенным тегом, потом при помощи цикла foreach(){} я перебираю объекты в массиве, в котором хранятся объекты с тегом и добавляю их в Lst, потом пишу 2 цикла for и сравниваю их, вот скрипт Код: public List<GameObject> _List; // Use this for initialization void Start () { GameObject[] TochkyPeremeshenia = GameObject.FindGameObjectsWithTag("Finish"); foreach(GameObject Finish in TochkyPeremeshenia){ List.Add(Finish); for(int a=0;a<=_List.Count-1;a++){ for(int i=0; i< _List.Count - a; i++){ float distancesI = Vector3.Distance(transform.position,_List[i].transform.position) * 10; float distancesI1 = Vector3.Distance(transform.position,_List[i+1].transform.position) * 10; if(distancesI > distancesI1){ _List[i] МЕНЯЕТСЯ _List[i+1] // <<-------- Как?:( } } } } } Название: Re: Плавное увеличение прицела в Unity3d Отправлено: Alcatraz от Ноябрь 27, 2012, 09:50:31 Такс, потерял тему, т.к ты создал не в том разделе, надо было в разделе юнити.
Присваивать значение элементу листа так: Код: lst[i] = "test" as string; т.е с указанием типа. sm_goodНазвание: Re: Плавное увеличение прицела в Unity3d Отправлено: redeek789789789 от Ноябрь 29, 2012, 17:00:57 Спасибо sm_hi3 sm_good
|