Anonymyx писал(а):Linerenderer + http://www.theappguruz.com/blog/add-col ... erer-unity
DimaJoke писал(а):А ты не поехали делай, а создавайте empty, или хотя бы пустой префаб.. а потом AddComponent<LineRenderer>();
.DimaJoke писал(а):Могу дать скрипт, я сейчас примерно тем же занимаюсь. Только там будет много ещё не нужной ерунды для тебя.
Ankarin писал(а):.DimaJoke писал(а):Могу дать скрипт, я сейчас примерно тем же занимаюсь. Только там будет много ещё не нужной ерунды для тебя.
...убрать лишнее в случае чего будет проще )
DimaJoke писал(а):тут у меня много публичных переменных, которые я в этотт фрагмент не занёс. разберёшьсяСинтаксис:Используется csharp
MousePos = camera.ScreenPointToRay(Input.mousePosition).origin;//ищим положение мыши
Quaternion Qua = new Quaternion(0, 0 , 0, 0);//Кватернион, вообще не нужная(почти) штука(для тебя)
bool Once = true;//Что бы один раз проигрывалось
if(Input.GetKeyUp(Key))// я создал переменную KeyCodе для этого
{
if(Steps == 0 && Once)
{
Instantiate(Circle, MousePos, Qua);//тут я делаю кружочек на месте клика
firstPos = MousePos;//заносим позицию
Steps = Steps + 1;//+ 1 шаг
Once = false;
}
if(Steps == 1 && Once)//второй шаг
{
secPos = MousePos;//вторая позиция
Instantiate(Circle, MousePos, Qua);//кружочек
Steps = Steps + 1;//+ 1 шаг
Once = false;
}
Once = true;
}
if(Steps == 2)//Если у нас 2 шага))
{
var line = Instantiate(Clear, firstPos, Qua);//создаём объект
line.AddComponent<LineRenderer>();//доьавляем рендерер
LineRenderer LineRender = line.GetComponent<LineRenderer>();// заносим рендерер как переменную
LineRender.materials[0] = LineMat;// ставим ему материал, который я сделал публичным(!)
LineRender.SetPosition(0, firstPos);//первая позиция
LineRender.SetPosition(1, secPos);//вторая
LineRender.startWidth = 0.200f;// ширина
line.transform.SetParent(Parent);//кидаем под Родителя( переменная Transform)
WallsNum = WallsNum + 1;//Тебе вряд ли пригодится, мне-для сериализации
var col = Instantiate(colid);//делаем колайдер
col.transform.parent = line.transform;//заносим колайдер как дочерний к линии
float lineLength = Vector3.Distance (firstPos, secPos); //ищем дистанцию между точками
col.size = new Vector3 (lineLength, 0.1f, 1f);//размер колайдера
Vector3 midPoint = (firstPos + secPos)/2;// средняя точка на линии
col.transform.position = midPoint; //где находится коллизия? на срередине линии!
float angle = (Mathf.Abs (firstPos.y - secPos.y) / Mathf.Abs (firstPos.x - secPos.x));//поворот коллизии
if((firstPos.y<secPos.y && firstPos.x>secPos.x) || (secPos.y<firstPos.y && secPos.x>firstPos.x))//и опять поворт
{
angle*=-1;
}
angle = Mathf.Rad2Deg * Mathf.Atan(angle);// взято из тутора, я не понял)))
col.transform.Rotate (0, 0, angle);// изменяем вращение коллизии
Walls[WallsNum] = new MyWall(WallsNum, firstPos, secPos, col);//заношу в массив моего класса(для сериализации, тебе не надо)
Steps = 0;//И СНОВА \0/
}
DimaJoke писал(а):тут у меня много публичных переменных, которые я в этотт фрагмент не занёс. разберёшьсяСинтаксис:Используется csharp
MousePos = camera.ScreenPointToRay(Input.mousePosition).origin;//ищим положение мыши
Quaternion Qua = new Quaternion(0, 0 , 0, 0);//Кватернион, вообще не нужная(почти) штука(для тебя)
bool Once = true;//Что бы один раз проигрывалось
if(Input.GetKeyUp(Key))// я создал переменную KeyCodе для этого
{
if(Steps == 0 && Once)
{
Instantiate(Circle, MousePos, Qua);//тут я делаю кружочек на месте клика
firstPos = MousePos;//заносим позицию
Steps = Steps + 1;//+ 1 шаг
Once = false;
}
if(Steps == 1 && Once)//второй шаг
{
secPos = MousePos;//вторая позиция
Instantiate(Circle, MousePos, Qua);//кружочек
Steps = Steps + 1;//+ 1 шаг
Once = false;
}
Once = true;
}
if(Steps == 2)//Если у нас 2 шага))
{
var line = Instantiate(Clear, firstPos, Qua);//создаём объект
line.AddComponent<LineRenderer>();//доьавляем рендерер
LineRenderer LineRender = line.GetComponent<LineRenderer>();// заносим рендерер как переменную
LineRender.materials[0] = LineMat;// ставим ему материал, который я сделал публичным(!)
LineRender.SetPosition(0, firstPos);//первая позиция
LineRender.SetPosition(1, secPos);//вторая
LineRender.startWidth = 0.200f;// ширина
line.transform.SetParent(Parent);//кидаем под Родителя( переменная Transform)
WallsNum = WallsNum + 1;//Тебе вряд ли пригодится, мне-для сериализации
var col = Instantiate(colid);//делаем колайдер
col.transform.parent = line.transform;//заносим колайдер как дочерний к линии
float lineLength = Vector3.Distance (firstPos, secPos); //ищем дистанцию между точками
col.size = new Vector3 (lineLength, 0.1f, 1f);//размер колайдера
Vector3 midPoint = (firstPos + secPos)/2;// средняя точка на линии
col.transform.position = midPoint; //где находится коллизия? на срередине линии!
float angle = (Mathf.Abs (firstPos.y - secPos.y) / Mathf.Abs (firstPos.x - secPos.x));//поворот коллизии
if((firstPos.y<secPos.y && firstPos.x>secPos.x) || (secPos.y<firstPos.y && secPos.x>firstPos.x))//и опять поворт
{
angle*=-1;
}
angle = Mathf.Rad2Deg * Mathf.Atan(angle);// взято из тутора, я не понял)))
col.transform.Rotate (0, 0, angle);// изменяем вращение коллизии
Walls[WallsNum] = new MyWall(WallsNum, firstPos, secPos, col);//заношу в массив моего класса(для сериализации, тебе не надо)
Steps = 0;//И СНОВА \0/
}
Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 23