Результаты поиска
| |
88mml72 | Дата: Пятница, 18 Июля 2014, 23:15 | Сообщение # 21 | Тема: Uscript Selection Box |
частый гость
Сейчас нет на сайте
| как мне кажется визуальный сриптинг это путь дальнейшей эволюции в программировании, думаю сказочных результатов можно добиться там и там зависит от пользователя, но вообще у меня просто неприязнь к текстовому программированию, потому что после многочасового просиживания у монитора с ним начинается помутнение в голове
|
|
| |
88mml72 | Дата: Пятница, 18 Июля 2014, 23:07 | Сообщение # 22 | Тема: Uscript Selection Box |
частый гость
Сейчас нет на сайте
| и не поймешь если отсутствует у тебя uscript, поэтому и писал так разбросанно, въедит тот кто работает с этой прогой, показные проекты имею ввиду example projects которые можно скачать например по этой ссылке http://www.uscript.net/docs/index.php?title=Example_Projects
вот там есть файл Draw Box
дальше думаю понятно
Добавлено (18.07.2014, 22:59) --------------------------------------------- фактически я прошу доделать задуманный контекст проекта либо показать в каком направлении двигаться
думаю так еще понятней...
Добавлено (18.07.2014, 23:01) --------------------------------------------- да функция contains в шарпе проверяет попадает ли объект в зону прямоугольника
Добавлено (18.07.2014, 23:04) --------------------------------------------- Код using UnityEngine; using System.Collections;
public class SelectionBox : MonoBehaviour { public Vector3 point1, point2; private float hight, width; private Rect selectRectGUI, selectRect; public bool DragMouse; public static SelectionBox selectionBoxtemp;
void Awake() { selectionBoxtemp = this; } public Texture2D selectTextur;
public void OnGUI() { if (DragMouse) { width = point2.x - point1.x; hight = (Screen.height - point2.y) - (Screen.height - point1.y); selectRect = new Rect(point1.x, Screen.height - point1.y, width, hight); GUI.DrawTexture(selectRect, selectTextur, ScaleMode.StretchToFill, true); } } public void SelectBox() { width = point2.x - point1.x; hight = (Screen.height - point2.y) - (Screen.height - point1.y); //инверсия if (width < 0) { width -= width + width; } if (hight < 0) { hight -= hight + hight; } if (point2.x < point1.x) { var x1 = point1.x; var x2 = point2.x; point1.x = x2; point2.x = x1; } if (point2.y > point1.y) { var y1 = point1.y; var y2 = point2.y; point1.y = y2; point2.y = y1;
} selectRect = new Rect(point1.x, Screen.height - point1.y, width, hight); foreach (GameObject i in UnitsArrays.tempUnitsArray.Allunits) { if (selectRect.Contains(camera.WorldToScreenPoint(i.transform.position))) { UnitsArrays.tempUnitsArray.addSelectedObject(i); } }
} } Добавлено (18.07.2014, 23:06) --------------------------------------------- вот полная реализация в шарпе Добавлено (18.07.2014, 23:07) --------------------------------------------- но аналогичное я хочу сделать в ускрипте, если так непонятно то я пас
Сообщение отредактировал 88mml72 - Пятница, 18 Июля 2014, 23:05 |
|
| |
88mml72 | Дата: Пятница, 18 Июля 2014, 21:56 | Сообщение # 23 | Тема: Uscript Selection Box |
частый гость
Сейчас нет на сайте
| в ускрипте есть показные проекты, один из них DrawBox вот как заставить на основе позиции рэкта селектитца отдельные объекты тоесть чтоб был тру если объект столкнулся с рэктом в шарпе есть функция
foreach (GameObject i in UnitsArrays.tempUnitsArray.Allunits) { if (selectRect.Contains(camera.WorldToScreenPoint(i.transform.position))) { UnitsArrays.tempUnitsArray.addSelectedObject(i); } } где подобное реализуется, надеюсь суть вопроса разъяснил внятно
|
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 18:28 | Сообщение # 24 | Тема: передача объекта из файла в файл |
частый гость
Сейчас нет на сайте
| Цитата void Awake(){ temp = this; }
с данным методом заработало, спасибо
|
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 12:56 | Сообщение # 25 | Тема: передача объекта из файла в файл |
частый гость
Сейчас нет на сайте
| using UnityEngine; using System.Collections; using System.Collections.Generic;
public class DetectClicksAndTouches : MonoBehaviour { //This variable is optional; if not set it will default to the main camera //This is so that you can detect clicks/touches on a separate UI Camera //This variable does NOT update in real time public Camera detectionCamera; //This variable adds a Debug.Log call to show what was touched public bool debug = false; //This is the actual camera we reference in the update loop, set in Start() private Camera _camera; //List<GameObject> UnitPlayerBase = new List<GameObject>(); void Start() { if(detectionCamera != null) { _camera = detectionCamera; } else { _camera = Camera.main; } } // Update is called once per frame void Update () { Ray ray; RaycastHit hit; if(Input.GetMouseButtonDown(0)) //Check to see if we've clicked { //Set up our ray from screen to scene ray = _camera.ScreenPointToRay(Input.mousePosition); //If we hit... if(Physics.Raycast (ray, out hit, Mathf.Infinity)) { //Tell the system what we clicked something if in debug if(debug) { Debug.Log("You clicked " + hit.collider.gameObject.name,hit.collider.gameObject); } if (hit.collider.tag == "Player") {
UnitBase.temp.UnitPlayerBaseFunction(hit.collider.gameObject); //UnitPlayerBase.Add(hit.collider.gameObject);
//Debug.Log(UnitPlayerBase.Count); }
//Run the Clicked() function on the clicked object
} hit.transform.gameObject.SendMessage("Clicked", hit.point, SendMessageOptions.DontRequireReceiver); } if(Input.GetMouseButtonDown(1)) //Check to see if we've clicked { //Set up our ray from screen to scene ray = _camera.ScreenPointToRay(Input.mousePosition); //If we hit... if(Physics.Raycast (ray, out hit, Mathf.Infinity)) { //Tell the system what we clicked something if in debug if(debug) { Debug.Log("You right clicked " + hit.collider.gameObject.name,hit.collider.gameObject); } //Run the Clicked() function on the clicked object hit.transform.gameObject.SendMessage("RightClicked", hit.point, SendMessageOptions.DontRequireReceiver); } } } }[Добавлено (11.07.2014, 12:56) --------------------------------------------- это первый файл вот второй (чуть код сменил)
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class UnitBase : MonoBehaviour { public static UnitBase temp; List<GameObject> UnitPlayerBase = new List<GameObject>();
public void UnitPlayerBaseFunction(GameObject g) {
UnitPlayerBase.Add(g); Debug.Log(UnitPlayerBase.Count); } }
Сообщение отредактировал 88mml72 - Пятница, 11 Июля 2014, 12:54 |
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 11:52 | Сообщение # 26 | Тема: передача объекта из файла в файл |
частый гость
Сейчас нет на сайте
| извиняюсь вместо transmissionobject передается hit.collider.gameObject но он полюбому не пуст Добавлено (11.07.2014, 11:52) ---------------------------------------------
Цитата Полный текст ошибки укажите.
NullReferenceException: Object reference not set to an instance of an object DetectClicksAndTouches.Update () (at Assets/camera/DetectClicksAndTouches.cs:58)
|
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 00:38 | Сообщение # 27 | Тема: передача объекта из файла в файл |
частый гость
Сейчас нет на сайте
| файл 1. сюда добавляется объект в массив
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class UnitBase : MonoBehaviour { List<GameObject> UnitPlayerBase = new List<GameObject>();
public void UnitPlayerBaseFunction(GameObject g) {
UnitPlayerBase.Add(g); Debug.Log(UnitPlayerBase.Count); } } файл 2 отсюда вызывается метод
............................................................................... UnitBase tempManager; ......................................................
if (hit.collider.tag == "Player") { tempManager.UnitPlayerBaseFunction(TransmissionObject); } при передаче возникает ошибка что мол пустая ссылка а если использовать ref иле out пишет что использование этих модификаторов для динамических объектов недопустимо как я понял
|
|
| |
88mml72 | Дата: Среда, 19 Марта 2014, 17:23 | Сообщение # 28 | Тема: загрузка текстур скриптом |
частый гость
Сейчас нет на сайте
| выкладую фесь файл
using UnityEngine; using System.Collections;
public class MoveSelectedUnitsOnRightClick : MonoBehaviour { public GameObject moveEffectObject; private UnitManager unitManager; public float angle = -10.0f; public Texture2D textureForward, textureBackward, textureLeft, textureRight;
void Start() { //синхронизация PlayerUnitManager c объектом GameObject unitManagerObject = GameObject.FindGameObjectWithTag("PlayerUnitManager"); //??? unitManager = unitManagerObject.GetComponent<UnitManager>();
}
//синхронизация правого клика миши с координатами void RightClicked(Vector3 clickPosition) { bool unitsSelected = false; //вызов метода foreach (GameObject unit in unitManager.GetSelectedUnits()) { unitsSelected = true; //приказ на движение unit.SendMessage("MoveOrder", clickPosition);
//работает поворот объекта на цель
// unit.transform.rotation = Quaternion.Slerp(unit.transform.rotation, Quaternion.LookRotation(clickPosition - unit.transform.position),1 * Time.deltaTime); /*if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 10.0f) { Debug.Log("+10°"); unit.transform.LookAt(clickPosition); }*/
unit.renderer.material.mainTexture = textureLeft;
} if (unitsSelected) { Instantiate(moveEffectObject, clickPosition, moveEffectObject.transform.rotation); }
} }
|
|
| |
88mml72 | Дата: Среда, 19 Марта 2014, 17:09 | Сообщение # 29 | Тема: загрузка текстур скриптом |
частый гость
Сейчас нет на сайте
| не знаю public Texture2D textureForward, textureBackward, textureLeft, textureRight; иле public Texture textureForward, textureBackward, textureLeft, textureRight;
потом цеплял через сандбокс текстуру на объект
|
|
| |
88mml72 | Дата: Среда, 19 Марта 2014, 12:26 | Сообщение # 30 | Тема: загрузка текстур скриптом |
частый гость
Сейчас нет на сайте
| облазил весь инет но так и не нашел решение проблемы. а надо так: при нажатии мышки на соответствующий угол террэйна у объекта меняется текстура но при использовании следующего кода:
if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 10.0f) { Debug.Log("+10°"); unit.transform.LookAt(clickPosition); unit.renderer.material.mainTexture = textureLeft; }
объект окрашивается в белый цвет будто бы для него и не существует выше приведенного кода. вопрос: есть ли альтернативы решения проблемы?Добавлено (19.03.2014, 12:26) --------------------------------------------- да и функция Material.SetTexture тоже не помогает если че
|
|
| |
88mml72 | Дата: Суббота, 15 Марта 2014, 18:47 | Сообщение # 31 | Тема: касательно Angel |
частый гость
Сейчас нет на сайте
| значит такой расклад: код if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= angle) работает прекрасно только если функцию //поворот юнита на позиуию кликанья unit.transform.LookAt(clickPosition); поместить после оператора if.
Добавлено (13.03.2014, 12:06) --------------------------------------------- нужна подсказка касательно этой темы. Скажем так, дэбуг выводит мне координаты по нажатии мышки на соответствующею позицию, однако оперирует функция Angle только на 180 градусов, работает оно так; допустим отчет в 10° и параллельно по обеим фронтам(восток, и запад) до замыкания окружности( до 180°) но мне надо чтоб было на востоке допустим 180° а на западе -180° либо и вовсе 360°
if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 10.0f) { Debug.Log("+10°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 20.0f) { Debug.Log("+20°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 30.0f) { Debug.Log("+30°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 40.0f) { Debug.Log("+40°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 50.0f) { Debug.Log("+50°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 60.0f) { Debug.Log("+60°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 70.0f) { Debug.Log("+70°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 80.0f) { Debug.Log("+80°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 90.0f) { Debug.Log("+90°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 100.0f) { Debug.Log("+100°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 110.0f) { Debug.Log("+110°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 120.0f) { Debug.Log("+120°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 130.0f) { Debug.Log("+130°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 140.0f) { Debug.Log("+140°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 150.0f) { Debug.Log("+150°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 160.0f) { Debug.Log("+160°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 170.0f) { Debug.Log("+170°"); unit.transform.LookAt(clickPosition); } else if (Vector3.Angle(unit.transform.forward, clickPosition - unit.transform.position) <= 180.0f) { Debug.Log("+180°"); unit.transform.LookAt(clickPosition); }
Добавлено (15.03.2014, 17:40) ---------------------------------------------
Сообщение отредактировал 88mml72 - Суббота, 15 Марта 2014, 19:03 |
|
| |
88mml72 | Дата: Четверг, 13 Марта 2014, 00:13 | Сообщение # 32 | Тема: касательно Angel |
частый гость
Сейчас нет на сайте
| сложная тема для меня поэтому подход может показаться несколько не адекватным вашим навыкам но все таки вопрос следующий:
имеется следующий код: (суть вопроса, мне нужно чтоб в консоль выводилось сообщение "Visible!" на установленный диапазон угла, потому что на данном этапе дэбуг срабатывает на все 360°
[/code]public float angle = 90f;
void RightClicked(Vector3 clickPosition) { //вызов метода foreach (GameObject unit in unitManager.GetSelectedUnits()) { unitsSelected = true; //приказ на движение unit.SendMessage("MoveOrder", clickPosition);
//поворот юнита на позиуию кликанья unit.transform.LookAt(clickPosition); // выводим на экран строку HelloWorld //вот проблема: if (Vector3.Angle(unit.transform.position, clickPosition) <= angle) { Debug.Log("Visible!"); }
Debug.Log("Hello World!");
}
} }[code]
Сообщение отредактировал 88mml72 - Четверг, 13 Марта 2014, 00:16 |
|
| |
88mml72 | Дата: Понедельник, 10 Марта 2014, 16:48 | Сообщение # 33 | Тема: GetComponent error |
частый гость
Сейчас нет на сайте
| спасибо... Цитата А зачем Вы у массива пытаетесь компонент получить? код не мой, просто с одного урока списываю https://www.youtube.com/watch?v=qnriIr_rPAk
|
|
| |
88mml72 | Дата: Понедельник, 10 Марта 2014, 16:22 | Сообщение # 34 | Тема: GetComponent error |
частый гость
Сейчас нет на сайте
| вот такая вот проблема: заранее благодарен !
|
|
| |
88mml72 | Дата: Среда, 26 Февраля 2014, 21:11 | Сообщение # 35 | Тема: совместное изучение c++ на игровом 2.5d движке возможно и бо |
частый гость
Сейчас нет на сайте
| немного предыстории: собственно читал книгу парты но на 575отой странице надоело мне это дело, поскольку автор книги делает неинтересные программы, да и знания усвоенные по книги начали выветриватся со временем из головы, решил изучать один движок My WebPage. так вот, автор и сам новичек в с++ и как он утверждает писал сабж на фазе познавания c++. И поэтому сам движок легок в понимании, на данный момент занимаюсь его изучением, добавлением комментариев напр. что за функция и для чего итд. после планирую перестроить код под свой вкус и занятся кодингом чегото простого в движке. (созданием простых юнитов, анимированием спрайтов итд.)
собственно тут и подумываю что данное направление будет еще комуто интерестно.
движок написан на SFML (до этого я работал только на консоле но все классы у этой библиотеки описаны на сайте изготовителя, ничего сложного там нет). никаких лицензий естественно не надо.
да, сам я новичек в с++ понимаю только его главные аспекты(например наследование классов, повторное использование кода а также другие прелести c++ мне еще не знакомы) коммуникация будет через скайп, письменная, сколько времени я буду отдавать себя делу сказать не могу, если честно я человек настроения, может быть десять часов в день а может быть всего час в неделю(надеюсь за счет взаимодействия с камерадами всетаки по 10:)) но собственно каждый работает независимо и на себя и у каждого будет исходник проекта. в любой момент человек может выйти и взять с собой последнюю версию проекта и делать на нем все что пожелает.
требование к кандитам всеголишь одно: условное понимание c++ однако принцыпы ооп вы всетаки же должны понимать потомучто разрабатывать сабж мы(я) будем по этой доктрине.
|
|
| |
88mml72 | Дата: Суббота, 20 Августа 2011, 16:55 | Сообщение # 36 | Тема: пак вопросов о кру энжайн 3 |
частый гость
Сейчас нет на сайте
|
карта слабая но для твоих целей думаю подойдет.
|
|
| |
88mml72 | Дата: Пятница, 19 Августа 2011, 20:34 | Сообщение # 37 | Тема: Вопрос-Ответ по CryENGINE 3 SDK |
частый гость
Сейчас нет на сайте
| Quote Recognized pre-commands Вроде в параметрах включить можно. вот если б кто помог...
|
|
| |
88mml72 | Дата: Четверг, 18 Августа 2011, 22:09 | Сообщение # 38 | Тема: Вопрос-Ответ по CryENGINE 3 SDK |
частый гость
Сейчас нет на сайте
| то что старые карты не поддерживают dx10 известно почти каждому
|
|
| |
88mml72 | Дата: Четверг, 18 Августа 2011, 21:14 | Сообщение # 39 | Тема: Вопрос-Ответ по CryENGINE 3 SDK |
частый гость
Сейчас нет на сайте
| Recognized Pre-Commands
DEVMODE: In DEVMODE, the lua debugger is disabled and the pak file system now prefers files outside the pak files. The LUA command execution in the console is now allowed (by using the # prefix). Console variables marked with the cheat flag can be changed. DX9: Use Direct3D 9 renderer (override the system.cfg setting). DX10: Use Direct3D 10 renderer (override the system.cfg setting).
MOD [SANDBOX:Modname]: Loads a MOD DLL, instead of the Crysis code; adds the folder of the MOD to the data directories to search in. MODs must be located in the engine folder, in the /Mods subdirectory. root: Launcher.exe -root < RootFolder > overrides the default folder for log files (also, LogBackups), cfg files (for the exec command), and level rotation files - the command line option is mostly used for 3rd party hosting, with multiple instances on the same machine support.
написано в мануале.
|
|
| |
88mml72 | Дата: Четверг, 18 Августа 2011, 20:36 | Сообщение # 40 | Тема: Вопрос-Ответ по CryENGINE 3 SDK |
частый гость
Сейчас нет на сайте
| помогите запустить в режиме DX10, все перепробовал, рендер пишет DX9. прописывал строчку r_driver DX10 в system.cfg не помогает.
|
|
| |
|