forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 12.03.2011 15:12

Ответ: Фак по Юнити.
 
Можно, но эффект будет не таким хорошим. Попробуй написать сам ;) а с одной текстурой можно использовать альфаканал.
PHP код:

Shader "Diffuse - Alpha Mask" {
    
Properties {
        
_Color ("Color"Color) = (1,1,1,1
        
_MainTex ("Base (RGB)"2D) = "black" {}
     }
    
SubShader {
        
Tags "RenderType"="Opaque" }
        
LOD 200
        
        CGPROGRAM
        
#pragma surface surf Lambert

        
sampler2D _MainTex;
         
float4 _Color;

        
struct Input {
            
float2 uv_MainTex;
        };

        
void surf (Input INinout SurfaceOutput o) {
            
half4 c tex2D (_MainTexIN.uv_MainTex);
            
float m c.a;
            
o.Albedo =  (1-m)*c.rgb m*_Color.rgb;
        }
        
ENDCG
    

    
FallBack "Diffuse"


Проблема с заменой цвета в том, что точно цвет пиксела не определить на границах из-за сглаживания, если только отключить сглаживание текстуры.

Evgen 12.03.2011 15:53

Ответ: Фак по Юнити.
 
Вложений: 1
Еще раз спасибо.

Цитата:

Сообщение от pax (Сообщение 182465)
Попробуй написать сам ;) а с одной текстурой можно использовать альфаканал.

Да уже и так все хорошо работает ;)

И тот и другой метод работает. Но вы правы, с маской пожалуй все-таки лучше.

Собственно результат:

Andvrok 13.03.2011 13:12

Ответ: Фак по Юнити.
 
Как привязать префабу дочерний префаб, как сделано, например, в FirstPersonController?

Reks888 13.03.2011 13:19

Ответ: Фак по Юнити.
 
Перетащить мышкой один на другой?

pax 13.03.2011 13:19

Ответ: Фак по Юнити.
 
FirstPersonController - это один префаб

Nuprahtor 13.03.2011 13:19

Ответ: Фак по Юнити.
 
Дочерний префаб? Как это? Имеется ввиду иерархия объектов (один префаб состоит из множества объетов)?

pax 13.03.2011 13:20

Ответ: Фак по Юнити.
 
как мы одновременно ))

Andvrok 13.03.2011 13:25

Ответ: Фак по Юнити.
 
Похоже, мы друг друга не поняли)
Вот префаб FirstPersonController состоит одновременно из самого себя, компонента Graphics и камеры Main Camera, но если попробовать добавить камеру любому другому префабу, то спрашивается, заменить ли один префаб на другой(

Nuprahtor 13.03.2011 13:27

Ответ: Фак по Юнити.
 
Если камеру добавлять в списке префабов, а не в инспекторе, все будет ОК ;)

Andvrok 13.03.2011 13:30

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Nuprahtor (Сообщение 182625)
Если камеру добавлять в списке префабов, а не в инспекторе, все будет ОК ;)

Эм, а это как?

Nuprahtor 13.03.2011 13:38

Ответ: Фак по Юнити.
 
Перепутал окно иерархии с инспектором
В общем, создаешь два объекта - obj1 и obj2. В окне Hierarchy перетягиваешь obj1 на obj2, получится структура.
В окне Project жмешь правой кнопкой - Create Prefab. Перетягиваешь иерархию объектов obj1-obj2 на префаб, теперь созданный префаб является этой иерархией
В Project указав префаб, ты можешь добавлять к нему компоненты, и эти компоненты добавятся ко всем объектам в Hirerarchy.
Это базовые основы работы с префабами

Andvrok 13.03.2011 13:45

Ответ: Фак по Юнити.
 
И как я не додумался до такого элементарного :(
А я как дурак тягал с иерархии понесколько объектов на префаб и огорчался, что "кубик то серый", про структуру вообще из головы вылетело:(

Evgen 18.03.2011 21:22

Ответ: Фак по Юнити.
 
To PAX не подкините пример как сделать так, чтобы на террайне оставались следы от гуссениц.

asdon 18.03.2011 23:44

Ответ: Фак по Юнити.
 
Как сделать, чтобы шарик катался на стрелочках?

Evgen 19.03.2011 00:27

Ответ: Фак по Юнити.
 
Пардон, уже что-то нашел, наверное этого хватит:
http://www.decane.net/external/gener...munity_1.1.zip

Что-то вроде этого:
PHP код:

using UnityEngine;
using System.Collections;

public class 
Tracks MonoBehaviour {
    
    public 
Mesh mesh;
    public 
int maxtracks=500;
    public 
Vector3[] newVertices;
    public 
Vector2[] newUV;
    public 
int[] newTriangles;
    
    
void Start() {
        
newVertices=new Vector3[maxtracks*4];
        
newUV=new Vector2[maxtracks*4];
        
newTriangles=new int[maxtracks*2*3];
        for(
int i=0;i<maxtracks*4;i+=4){
            
float x=Random.Range(30,60);
            
float y=Random.Range(30,60);
            
newVertices[i]=new Vector3(x,8,y);
            
newVertices[i+1]=new Vector3(x+1,8,y);
            
newVertices[i+2]=new Vector3(x,8,y+1);
            
newVertices[i+3]=new Vector3(x+1,8,y+1);
        }    
        for(
int i=0;i<maxtracks*4;i+=4){
            
newUV[i]=new Vector2(0,0);
            
newUV[i+1]=new Vector2(1,0);
            
newUV[i+2]=new Vector2(0,1);
            
newUV[i+3]=new Vector2(1,1);
        }    
        for(
int i=0;i<maxtracks;i++){
            
newTriangles[i*6]=i*4;
            
newTriangles[i*6+1]=i*4+2;
            
newTriangles[i*6+2]=i*4+1;
            
newTriangles[i*6+3]=i*4+3;
            
newTriangles[i*6+4]=i*4+1;
            
newTriangles[i*6+5]=i*4+2;            
        }    
        
mesh = new Mesh();
        
GetComponent<MeshFilter>().mesh mesh;
        
mesh.Clear();
        
mesh.vertices newVertices;
        
mesh.uv newUV;
        
mesh.triangles newTriangles;
    }
    
    
void Update() {

    }    




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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot