Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 27.02.2012, 00:12   #16
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: 3d Floor Plan

1. Запоминать координаты всех линий и рисовать все сразу.
2. Для каждой линии создавать отдельный объект, ее рисующий.
3. Использовать например LineRenderer
4. и т.д.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 29.02.2012, 13:31   #17
Georg Gukov
AnyKey`щик
 
Регистрация: 20.02.2012
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: 3d Floor Plan

Как отредактировать этот скрипт так чтобы он рисовал не линию а прямоугольник
using UnityEngine;
using System.Collections.Generic;
public class example : MonoBehaviour {

struct line
{
public Vector3 start;
public Vector3 end;
}
public Material mat;
private Vector3 mousePos;
private bool startDraw;
private List<line> lines;
private line currentLine;
void Start() {
lines = new List<line>();
startDraw = false;
}
void Update() {
mousePos = Input.mousePosition;
if (Input.GetKeyDown(KeyCode.Space) && !startDraw)
{
currentLine.start = new Vector3(mousePos.x / Screen.width, mousePos.y / Screen.height, 0);
startDraw = true;
}else if (Input.GetKeyDown(KeyCode.Space) && startDraw)
{
currentLine.end = new Vector3(mousePos.x / Screen.width, mousePos.y / Screen.height, 0);
lines.Add(currentLine);
startDraw = false;
}

}
void OnPostRender() {
if (!mat) {
Debug.LogError("Please Assign a material on the inspector");
return;
}
GL.PushMatrix();
mat.SetPass(0);
GL.LoadOrtho();

foreach(line l in lines)
{
GL.Begin(GL.LINES);
GL.Color(Color.red);
GL.Vertex(l.start);
GL.Vertex(l.end);
GL.End();
}

if(startDraw)
{
GL.Begin(GL.LINES);
GL.Color(Color.yellow);
GL.Vertex(currentLine.start);
GL.Vertex(new Vector3(mousePos.x / Screen.width, mousePos.y / Screen.height, 0));
GL.End();
}
GL.PopMatrix();
}
}
(Offline)
 
Ответить с цитированием
Старый 29.02.2012, 13:50   #18
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: 3d Floor Plan

Рисовать не линиями а треугольниками.
http://unity3d.com/support/documenta...TRIANGLES.html
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 12.03.2012, 19:27   #19
Georg Gukov
AnyKey`щик
 
Регистрация: 20.02.2012
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: 3d Floor Plan

Привет всем!!! Подскажите пожалуйста как изменить скрипт для рисования мышью
private var origPoints : Vector2[];

function Start () {
    linePoints = new Vector2[numberOfPoints];
    origPoints = new Vector2[numberOfPoints];
    
    // Plot points on a circle
    var radians : float = 360.0/(numberOfPoints-1)*Mathf.Deg2Rad;
    var p = 0.0;
    for (i = 0; i < numberOfPoints; i++) {
        linePoints[i] = Vector2(.5 + .25*Mathf.Cos(p), .5 + .25*Mathf.Sin(p));
        origPoints[i] = linePoints[i];
        p += radians;
    }
}

function Update () { 
    for (i = 0; i < linePoints.Length; i++) {
        if (i%2 == 0) {var m = .4; var t = 1.0;}
        else {m = .5; t = .5;}
        linePoints[i] = (origPoints[i]-Vector2(.5, .5))*(Mathf.Sin(Time.time*t)+Mathf.PI*m)+Vector2(.5, .5);
    }
}

var numberOfPoints = 31;
var lineColor = Color.white;
var lineWidth = 3;
var drawLines = true;
private var lineMaterial : Material;
private var linePoints : Vector2[];
private var cam : Camera;

function Awake () {
    lineMaterial = new Material( "Shader \"Lines/Colored Blended\" {" +
        "SubShader { Pass {" +
        "   BindChannels { Bind \"Color\",color }" +
        "   Blend SrcAlpha OneMinusSrcAlpha" +
        "   ZWrite Off Cull Off Fog { Mode Off }" +
        "} } }");
    lineMaterial.hideFlags = HideFlags.HideAndDontSave;
    lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
    cam = camera;
}

function OnPostRender () {
    if (!drawLines || !linePoints || linePoints.Length < 2) {return;}
    
    var nearClip = cam.nearClipPlane + .00001; // Add a bit, else there's flickering when the camera moves
    var end = linePoints.Length - 1;
    var thisWidth = 1.0/Screen.width * lineWidth * .5;
        
    lineMaterial.SetPass(0);
    GL.Color(lineColor);
    
    if (lineWidth == 1) {
        GL.Begin(GL.LINES);
        for (i = 0; i < end; i++) {
            GL.Vertex(cam.ViewportToWorldPoint(Vector3(linePoints[i].x, linePoints[i].y, nearClip)));
            GL.Vertex(cam.ViewportToWorldPoint(Vector3(linePoints[i+1].x, linePoints[i+1].y, nearClip)));
        }
    }
    else {
        GL.Begin(GL.QUADS);
        for (i = 0; i < end; i++) {
            var perpendicular = (Vector3(linePoints[i+1].y, linePoints[i].x, nearClip) -
                                 Vector3(linePoints[i].y, linePoints[i+1].x, nearClip)).normalized * thisWidth;
            var v1 = Vector3(linePoints[i].x, linePoints[i].y, nearClip);
            var v2 = Vector3(linePoints[i+1].x, linePoints[i+1].y, nearClip);
            GL.Vertex(cam.ViewportToWorldPoint(v1 - perpendicular));
            GL.Vertex(cam.ViewportToWorldPoint(v1 + perpendicular));
            GL.Vertex(cam.ViewportToWorldPoint(v2 + perpendicular));
            GL.Vertex(cam.ViewportToWorldPoint(v2 - perpendicular));
        }
    }
    GL.End();
}

function OnApplicationQuit () {
    DestroyImmediate(lineMaterial);
}

@script RequireComponent(Camera)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:33.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com