forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

WISHMASTER35 02.08.2013 01:26

Ответ: Вопросы от новичка
 
pax, ровно оно выходит только, если использовать и в шапке и в таблице GUILayout.Space(30).
Если в таблице писать как мне надо EditorGUILayout.Toggle(layer.active, GUILayout.Width(30)), то оно возьмет больше ширины.
Конечно можно подбирать нужные цифры, но это уже вообще не супер.

pax 02.08.2013 09:34

Ответ: Вопросы от новичка
 
GUILayout.Space(30 + GUI.skin.toggle.padding.left + GUI.skin.toggle.padding.right);

или

GUILayout.Space(30 + GUI.skin.toggle.padding.horizontal);

WISHMASTER35 02.08.2013 17:25

Ответ: Вопросы от новичка
 
pax, так правильно заработало.
GUILayout.Space(30+Mathf.Ceil(GUI.skin.toggle.padd ing.horizontal/2f))

Использовал Handles.FreeMoveHandle. Нужно было определить какой из этих шариков сейчас активный. Узнать это можно только использовав GUI.SetNextControlName и GetNameOfFocusedControl, что оказалось очень тормозным. Правда шариков у меня было 100.

Пришлось с помощью рефлекций добираться до внутреннего метода юнити. Вообщем вот что получилось
Код:

delegate Vector3 FreeMove(int id, Vector3 position, Quaternion rotation, float size, Vector3 snap, Handles.DrawCapFunction capFunc);
private static FreeMove freeMove;
       
        static MyHandles() {
                var assembly = Assembly.GetAssembly( typeof(Handles) );
                Type type = assembly.GetType("UnityEditorInternal.FreeMove");
                var method = type.GetMethod("Do");
                freeMove = (FreeMove)Delegate.CreateDelegate( typeof(FreeMove), method );
        }

Это чтобы можно было рисовать FreeMoveHandle, со своим ID. Ну а дальше генерирую свой id EditorGUIUtility.GetControlID(FocusType.Keyboard), рисую шарик и сверяю EditorGUIUtility.hotControl со своим ID.
Вот теперь думаю они вообще занимаются своим редактором?
Ведь достаточно было сделать возможность получить последний сгенерированный ID или сделать проверку на фокус последнего контрола.

WISHMASTER35 05.08.2013 18:52

Ответ: Вопросы от новичка
 
Кто-нибудь делал, чтобы персонаж мог плавать?
Во первых нужно сделать, чтобы персонаж при всплытии не просто останавливался на уровне воды, а немного выпрыгивал из нее и еще немного колебался на воде.
Во вторых нужно сделать, чтобы когда персонаж просто плыл по воде, то тоже колебался на воде.
Чет как не делаю - все не нравится.

Andvrok 05.08.2013 21:21

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 264875)
Во первых нужно сделать, чтобы персонаж при всплытии не просто останавливался на уровне воды, а немного выпрыгивал из нее и еще

Может я не шарю, но нельзя это сделать на уровне анимации, а не программно? Сделать анимацию с выпрыгиванием, и проигрывать её при достижении уровня воды.

Lestar 05.08.2013 22:23

Ответ: Вопросы от новичка
 
Смотрел?

WISHMASTER35 05.08.2013 23:23

Ответ: Вопросы от новичка
 
Lestar, вчера искал, но не нашел. Когда-то давно видел.
Andvrok, я пробовал кривыми настраивать силу выталкивания в зависимости от глубины погружения. Вообщем-то получалось тоже, что и без кривой.

Я думаю можно как-то создать амплитуду качания на воде. И увеличивать\уменьшать ее в зависимости от скорости. Но все это я слабо себе представляю и сделать не получается.

Кстати, лучше сделать затухание скорости? Если просто умножать на 0.95, то большая скорость уменьшается медленно, а маленькая скорость так и не доходит до нуля.

Andvrok 06.08.2013 01:03

Ответ: Вопросы от новичка
 
На протяжении, допустим, десяти секунд, отнимаешь от скорости одну десятую её изначального значения. Например, если скорость 50 - то за 10 секунд уменьшаешь её до нуля по 5 в секунду; если скорость 162 - то за 10 секунд уменьшаешь её по 16.2 в секунду. Длительность тоже можно брать из скорости.

RegIon 06.08.2013 05:24

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 264888)
Lestar, вчера искал, но не нашел. Когда-то давно видел.
Andvrok, я пробовал кривыми настраивать силу выталкивания в зависимости от глубины погружения. Вообщем-то получалось тоже, что и без кривой.

Я думаю можно как-то создать амплитуду качания на воде. И увеличивать\уменьшать ее в зависимости от скорости. Но все это я слабо себе представляю и сделать не получается.

Кстати, лучше сделать затухание скорости? Если просто умножать на 0.95, то большая скорость уменьшается медленно, а маленькая скорость так и не доходит до нуля.

Плавающие тела, переменная WaterY - высота воды.

PHP код:

// Buoyancy.cs
// by Alex Zhdankin
// Version 2.1
//
// http://forum.unity3d.com/threads/72974-Buoyancy-script
//
// Terms of use: do whatever you like

using System.Collections.Generic;
using UnityEngine;

public class 
Buoyancy MonoBehaviour
{
//    public Ocean ocean;

    
public float waterY=0f;
    public 
float density 500;
    public 
int slicesPerAxis 2;
    public 
bool isConcave false;
    public 
int voxelsLimit 16;

    private const 
float DAMPFER 0.1f;
    private const 
float WATER_DENSITY 1000;

    private 
float voxelHalfHeight;
    private 
Vector3 localArchimedesForce;
    private List<
Vector3voxels;
    private 
bool isMeshCollider;
    private List<
Vector3[]> forces// For drawing force gizmos

    /// <summary>
    /// Provides initialization.
    /// </summary>
    
private void Start()
    {
        
forces = new List<Vector3[]>(); // For drawing force gizmos

        // Store original rotation and position
        
var originalRotation transform.rotation;
        var 
originalPosition transform.position;
        
transform.rotation Quaternion.identity;
        
transform.position Vector3.zero;

        
// The object must have a collider
        
if (collider == null)
        {
            
gameObject.AddComponent<MeshCollider>();
            
Debug.LogWarning(string.Format("[Buoyancy.cs] Object \"{0}\" had no collider. MeshCollider has been added."name));
        }
        
isMeshCollider GetComponent<MeshCollider>() != null;

        var 
bounds collider.bounds;
        if (
bounds.size.bounds.size.y)
        {
            
voxelHalfHeight bounds.size.x;
        }
        else
        {
            
voxelHalfHeight bounds.size.y;
        }
        if (
bounds.size.voxelHalfHeight)
        {
            
voxelHalfHeight bounds.size.z;
        }
        
voxelHalfHeight /= slicesPerAxis;

        
// The object must have a RidigBody
        
if (rigidbody == null)
        {
            
gameObject.AddComponent<Rigidbody>();
            
Debug.LogWarning(string.Format("[Buoyancy.cs] Object \"{0}\" had no Rigidbody. Rigidbody has been added."name));
        }
        
rigidbody.centerOfMass = new Vector3(0, -bounds.extents.0f0) + transform.InverseTransformPoint(bounds.center);

        
voxels SliceIntoVoxels(isMeshCollider && isConcave);

        
// Restore original rotation and position
        
transform.rotation originalRotation;
        
transform.position originalPosition;

        
float volume rigidbody.mass density;

        
WeldPoints(voxelsvoxelsLimit);

        
float archimedesForceMagnitude WATER_DENSITY Mathf.Abs(Physics.gravity.y) * volume;
        
localArchimedesForce = new Vector3(0archimedesForceMagnitude0) / voxels.Count;

        
Debug.Log(string.Format("[Buoyancy.cs] Name=\"{0}\" volume={1:0.0}, mass={2:0.0}, density={3:0.0}"namevolumerigidbody.massdensity));
    }

    
/// <summary>
    /// Slices the object into number of voxels represented by their center points.
    /// <param name="concave">Whether the object have a concave shape.</param>
    /// <returns>List of voxels represented by their center points.</returns>
    /// </summary>
    
private List<Vector3SliceIntoVoxels(bool concave)
    {
        var 
points = new List<Vector3>(slicesPerAxis slicesPerAxis slicesPerAxis);

        if (
concave)
        {
            var 
meshCol GetComponent<MeshCollider>();

            var 
convexValue meshCol.convex;
            
meshCol.convex false;

            
// Concave slicing
            
var bounds collider.bounds;
            for (
int ix 0ix slicesPerAxisix++)
            {
                for (
int iy 0iy slicesPerAxisiy++)
                {
                    for (
int iz 0iz slicesPerAxisiz++)
                    {
                        
float x bounds.min.bounds.size.slicesPerAxis * (0.5f ix);
                        
float y bounds.min.bounds.size.slicesPerAxis * (0.5f iy);
                        
float z bounds.min.bounds.size.slicesPerAxis * (0.5f iz);

                        var 
transform.InverseTransformPoint(new Vector3(xyz));

                        if (
PointIsInsideMeshCollider(meshColp))
                        {
                            
points.Add(p);
                        }
                    }
                }
            }
            if (
points.Count == 0)
            {
                
points.Add(bounds.center);
            }

            
meshCol.convex convexValue;
        }
        else
        {
            
// Convex slicing
            
var bounds GetComponent<Collider>().bounds;
            for (
int ix 0ix slicesPerAxisix++)
            {
                for (
int iy 0iy slicesPerAxisiy++)
                {
                    for (
int iz 0iz slicesPerAxisiz++)
                    {
                        
float x bounds.min.bounds.size.slicesPerAxis * (0.5f ix);
                        
float y bounds.min.bounds.size.slicesPerAxis * (0.5f iy);
                        
float z bounds.min.bounds.size.slicesPerAxis * (0.5f iz);

                        var 
transform.InverseTransformPoint(new Vector3(xyz));

                        
points.Add(p);
                    }
                }
            }
        }

        return 
points;
    }

    
/// <summary>
    /// Returns whether the point is inside the mesh collider.
    /// </summary>
    /// <param name="c">Mesh collider.</param>
    /// <param name="p">Point.</param>
    /// <returns>True - the point is inside the mesh collider. False - the point is outside of the mesh collider. </returns>
    
private static bool PointIsInsideMeshCollider(Collider cVector3 p)
    {
        
Vector3[] directions = { Vector3.upVector3.downVector3.leftVector3.rightVector3.forwardVector3.back };

        foreach (var 
ray in directions)
        {
            
RaycastHit hit;
            if (
c.Raycast(new Ray(ray 1000ray), out hit1000f) == false)
            {
                return 
false;
            }
        }

        return 
true;
    }

    
/// <summary>
    /// Returns two closest points in the list.
    /// </summary>
    /// <param name="list">List of points.</param>
    /// <param name="firstIndex">Index of the first point in the list. It's always less than the second index.</param>
    /// <param name="secondIndex">Index of the second point in the list. It's always greater than the first index.</param>
    
private static void FindClosestPoints(IList<Vector3> list, out int firstIndexout int secondIndex)
    {
        
float minDistance float.MaxValuemaxDistance float.MinValue;
        
firstIndex 0;
        
secondIndex 1;

        for (
int i 0< list.Count 1i++)
        {
            for (
int j 1< list.Countj++)
            {
                
float distance Vector3.Distance(list[i], list[j]);
                if (
distance minDistance)
                {
                    
minDistance distance;
                    
firstIndex i;
                    
secondIndex j;
                }
                if (
distance maxDistance)
                {
                    
maxDistance distance;
                }
            }
        }
    }

    
/// <summary>
    /// Welds closest points.
    /// </summary>
    /// <param name="list">List of points.</param>
    /// <param name="targetCount">Target number of points in the list.</param>
    
private static void WeldPoints(IList<Vector3> list, int targetCount)
    {
        if (list.
Count <= || targetCount 2)
        {
            return;
        }

        while (list.
Count targetCount)
        {
            
int firstsecond;
            
FindClosestPoints(list, out firstout second);

            var 
mixed = (list[first] + list[second]) * 0.5f;
            list.
RemoveAt(second); // the second index is always greater that the first => removing the second item first
            
list.RemoveAt(first);
            list.
Add(mixed);
        }
    }

    
/// <summary>
    /// Returns the water level at given location.
    /// </summary>
    /// <param name="x">x-coordinate</param>
    /// <param name="z">z-coordinate</param>
    /// <returns>Water level</returns>
    
private float GetWaterLevel(float xfloat z)
    {
//        return ocean == null ? 0.0f : ocean.GetWaterHeightAtLocation(x, z);
        
return waterY;
    }

    
/// <summary>
    /// Calculates physics.
    /// </summary>
    
private void FixedUpdate()
    {
        
forces.Clear(); // For drawing force gizmos

        
foreach (var point in voxels)
        {
            var 
wp transform.TransformPoint(point);
            
float waterLevel GetWaterLevel(wp.xwp.z);

            if (
wp.voxelHalfHeight waterLevel)
            {
                
float k = (waterLevel wp.y) / (voxelHalfHeight) + 0.5f;
                if (
1)
                {
                    
1f;
                }
                else if (
0)
                {
                    
0f;
                }

                var 
velocity rigidbody.GetPointVelocity(wp);
                var 
localDampingForce = -velocity DAMPFER rigidbody.mass;
                var 
force localDampingForce Mathf.Sqrt(k) * localArchimedesForce;
                
rigidbody.AddForceAtPosition(forcewp);

                
forces.Add(new[] { wpforce }); // For drawing force gizmos
            
}
        }
    }

    
/// <summary>
    /// Draws gizmos.
    /// </summary>
    
private void OnDrawGizmos()
    {
        if (
voxels == null || forces == null)
        {
            return;
        }

        const 
float gizmoSize 0.05f;
        
Gizmos.color Color.yellow;

        foreach (var 
p in voxels)
        {
            
Gizmos.DrawCube(transform.TransformPoint(p), new Vector3(gizmoSizegizmoSizegizmoSize));
        }

        
Gizmos.color Color.cyan;

        foreach (var 
force in forces)
        {
            
Gizmos.DrawCube(force[0], new Vector3(gizmoSizegizmoSizegizmoSize));
            
Gizmos.DrawLine(force[0], force[0] + force[1] / rigidbody.mass);
        }
    }



Юзай http://forum.unity3d.com/attachment....6&d=1294425510
Только перепиши немного, а то там уровень воды постоянно на 0,0,0 , не помню какая переменная.

Думаю силы к фИЗ телам прилагать умеешь .
Для колебаний - делай псевдослучайные толчки ввверх или вниз, ну или волны, на уровне меша и колайдера

Morganolla 11.08.2013 11:40

Ответ: Вопросы от новичка
 
Извините, хочу уточнить для себя некоторые моменты про плагины с dll - http://docs.unity3d.com/Documentatio...l/Plugins.html. Насколько я понял внешние библиотеки, оформленные в виде внешних dll , можно использовать только с ПРО-версией? И следовательно платные плагины от известных производителей (например PRIME ) можно использовать тоже только в ПРО-версиях? Или я ошибаюсь?

seaman 11.08.2013 11:49

Ответ: Вопросы от новичка
 
Подавляющее большинство платных плагинов написано на шарпе. Для них не нужна ПРО. Плагины про которые говорится по ссылке, и которые только для ПРО написаны на нативном языке (C++ и подобные).
Скорее всего и PRIME написан на шарпе. Следовательно для его использования не нужно ПРО, если там, конечно, не используются другие фишки ПРО.

Morganolla 11.08.2013 11:56

Ответ: Вопросы от новичка
 
Например плагин для гейм-центра от прайм31 - http://prime31.com/docs#iosGameCenter, нужна ПРО- версия или нет?

pax 11.08.2013 13:10

Ответ: Вопросы от новичка
 
На мобильниках нативные плагины поддерживаются, Pro надо только на Win/Mac для поддержки С++/ С плагинов
http://unity3d.com/unity/licenses





Но следует помнить, что для android нативный язык это java, а для ios - ObjC

Morganolla 11.08.2013 17:00

Ответ: Вопросы от новичка
 
ЗВМ, зенкью вери мач! Как хитро они все это закрутили...)))

seaman 11.08.2013 17:38

Ответ: Вопросы от новичка
 
Цитата:

Как хитро они все это закрутили.
А что тут хитрого. Там где есть рефлексия - поддерживается во фри. Где нет - только в ПРО.

WISHMASTER35 11.08.2013 23:42

Ответ: Вопросы от новичка
 
seaman, что значит нет рефлексии? System.Reflection где-то не работает?

А можно как-то отловить событие, что с помощью Undo объект вернулся в прежнее состояние?

seaman 12.08.2013 13:42

Ответ: Вопросы от новичка
 
Цитата:

что значит нет рефлексии
На свете сотни, если не тысячи языков. Под .NET их всего несколько. System.Reflection - это сборка .NET. Следовательно в подавляющем большинстве языков ее просто нет.
Как вообще работает рефлексия? В сборку кроме кода на MSIL пишется дополнительная информация - метаданные. В этих метаданных масса информации о Ваших классах, переменных, функциях. Эти данные можно получить из сборки и обработать. Юнити на этапе компиляции проекта получает из плагинов, поддерживающих рефлексию нужные данные и строит проект используя их.
В C++ нет рефлексии. Там эти данные в скомпилированную dll просто не пишутся. Следовательно на этапе сборки проекта получить нужные данные неоткуда. Программист сам должен загрузить нужную dll, найти в ней нужный метод и запустить его. Вот поддержку этой фичи Юнитеки сделали только для ПРО.

pax 12.08.2013 17:03

Ответ: Вопросы от новичка
 
Подведу итог: в бейсик лицензии не поддерживается атрибут [DllImport]

HolyDel 12.08.2013 17:31

Ответ: Вопросы от новичка
 
Цитата:

В C++ нет рефлексии. Там эти данные в скомпилированную dll просто не пишутся.
в с++/cli есть рефлексия. но это уже не чисты С++, да.

avel 12.08.2013 18:00

Ответ: Вопросы от новичка
 
продублирую свой вопрос из вот этой темы.

при создании куба, плоскости, любого другого стандартного объекта в сцене, юнити вылетает и предлагает отправить отчет об ошибке.

вопрос - чего ей не хватает и как лечить.

версия юнити - 4.2

комп: DNS; 2Гб ОЗУ; проц - Intel Atom, 2 ядра + 2 виртуальных; видео - intel graphic media accelerator 3150, 256 MB.

ОС: WinXP SP3.

убивать камеру и создавать пробовал.
перезагружать юнити, комп, проект пробовал.
пересоздавать проект пробовал.
с бубном плясать пробовал.

WISHMASTER35 12.08.2013 18:07

Ответ: Вопросы от новичка
 
avel, юнити должен где-то лог создавать. Глянь лог.
А если создать пустой объект и на него навешать нужных скрипов?

avel 12.08.2013 18:33

Ответ: Вопросы от новичка
 
Вложений: 1
файлы логов в аттаче, но я там не особо че понял.

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

остальные объекты когда создаешь (сфера, цилиндр, плоскость) - та же реакция.

seaman 12.08.2013 19:03

Ответ: Вопросы от новичка
 
Несколько не то. Здесь (в семерке) лог редактора:
c:\Users\ПОЛЬЗОВАТЕЛЬ\Local Settings\Unity\Editor\

avel 12.08.2013 20:10

Ответ: Вопросы от новичка
 
Вложений: 1
вот:

avel 12.08.2013 20:22

Ответ: Вопросы от новичка
 
хм, а теперь еще и сайтик с тутором не пашет: http://shgames.ru/
о_0
мистика прям...

Morganolla 12.08.2013 20:47

Ответ: Вопросы от новичка
 
У меня тоже сайт не пашет. Скорее всего дело в видео драйверах у тебя. Интеловские видюхи часто глючат с движками. Попробуй на другом компе.
Имхо, вобщем комп у тебя - гуано, смени на нормальный...

WISHMASTER35 12.08.2013 23:52

Ответ: Вопросы от новичка
 
avel, "(Unity): (filename not available): ShaderLab:: Program::GetMatchingSubProgram + 0x6"
с шейдером похоже проблема.
А игры сделанные на юнити или вообще игры работают?

avel 13.08.2013 00:09

Ответ: Вопросы от новичка
 
WISHMASTER35, на счет игр, сделанных на юнити не знаю, ибо не запускал таковых. а так все работает вроде.
единственное, что не захотело работать это дибла третья, ибо она в принципе интеловскую линейку видеокарт не поддерживает. а остальное все работает прекрасно, и даже вполне себе шустро.
ла2, властелин колец онлайн, квэйк 3, сталкер, пв, вормсы - все отлично фурычит.

так что с этим шейдером сотворить, чтобы оно заработало?
есть какие идеи, как сие решить?

и кто знает что с сайтом?

WISHMASTER35 13.08.2013 00:34

Ответ: Вопросы от новичка
 
Попробуй создать в ассетах материал и назначить ему самый простой шейдер из списка unlit.
Попробуй создать свой куп просто добавляя компоненты на пустой GameObject.
Конечно это не исправит проблему, но может что-то прояснится.

А лучше проверь все ли нормально с драйверами и отправь баг репорт.
Хотя я не думаю, что юнити особо хочет поддерживать такое слабое железо и Windows XP.

WISHMASTER35 13.08.2013 00:38

Ответ: Вопросы от новичка
 
Вложений: 2
В кривых кто-то разбирается?
Вот так я вычисляю линейную кривую. Получается как на рисунке 1.
Код:

                for(int i=1; i<keys.Length; i++) {
                        var v1 = keys[i];
                        var v2 = keys[i-1];
                        keys[i].inTangent = (v1.value-v2.value) / (v1.time-v2.time);
                }
                for(int i=0; i<keys.Length-1; i++) {
                        var v1 = keys[i];
                        var v2 = keys[i+1];
                        keys[i].outTangent = (v1.value-v2.value) / (v1.time-v2.time);
                }

Но нужно переменной менять уровень сглаживания. Т.е. чтобы кривая генерировалась от такой как на рисунке 1 до полукруга как на рисунке 2.
Как сделать такое сглаживание?
Или хотя бы как генерировать полукруг из кривой?

seaman 13.08.2013 00:45

Ответ: Вопросы от новичка
 
Мне не понравилось это: "Unsupported: Hidden/SceneViewWireframe"
Режим Wireframe включен? Попробуй на Texture перевести.
Попробуй более старую версию Юнити поставить. Дрова на видюху обновить.
Вроде по требования комп подходит, хоть и слабенький.

seaman 13.08.2013 00:46

Ответ: Вопросы от новичка
 
Цитата:

Получается как на рисунке 1.
А где рисунок?

WISHMASTER35 13.08.2013 01:18

Ответ: Вопросы от новичка
 
seaman, как где? Внизу поста прикреплен.

pax 13.08.2013 14:30

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от avel (Сообщение 265214)
хм, а теперь еще и сайтик с тутором не пашет: http://shgames.ru/
о_0
мистика прям...

Сервер у хостера сдох, восстановили

по проблеме: проект не в русской папке? или в пути до проекта есть русские буквы? Должно быть все на английском и туда должен быть доступ. Не рекомендую например создавать проекты на рабочем столе. Лучше всего не системный диск.

WISHMASTER35 попробуй сгладить нужный кейфрейм
http://docs.unity3d.com/Documentatio...hTangents.html

RegIon 13.08.2013 15:38

Ответ: Вопросы от новичка
 
Нормально работает с русскими путями, вернее без вылетов.
Только шрифты не работают, но это не так важно/кому как.

WISHMASTER35 13.08.2013 17:04

Ответ: Вопросы от новичка
 
pax, сглаживание это сглаживает, но окружности не получается.
И зачем окно редактора кривых автоматически вычисляет пропорции? Как мне это уже надоело(( И отключить эту фигню нельзя!

Okay 15.08.2013 03:55

Ответ: Вопросы от новичка
 
Может кто-нибудь рассказать о raycast?
Смотрел документацию, но она на английском =)

avel 15.08.2013 05:56

Ответ: Вопросы от новичка
 
я снова тут! =)

итак, переустановка дров на видюху ничего не дала.

материалы, и текстуры со всеми (ну по крайней мере с несколькими) шейдерами создаются нормально, все отлично фурычит. вылетает только на объектах. камера, свет создаются нормально. а вот 3д текст или любой стандартный объект - приводят к вылетанию.

баг репорт отправил, надеюсь они поймут мой ломаный английский, в котором сто лет не практиковался. =)

русских символов в названии папок\проекта\пути - нету. у меня еще со времен доса привычка все имена файлов и папки на латинице писать. проект выглядит так: D:\projects\1\
не думаю, что тут что-то может не понравиться.

а как создать пустой GameObject подскажите чайнику новичку?
а то все мои попытки начать уже таки обучение пока приводят лишь к вылетанию. =)

ну и если еще какие мысли есть, то я весь во внимании. ибо проблема все еще не решена.

RegIon 15.08.2013 15:41

Ответ: Вопросы от новичка
 
в инспекторе add->game object

avel 15.08.2013 17:29

Ответ: Вопросы от новичка
 
пустой геймОбъект создает. плюс выбираются в свойствах и кубы и сферы и все прочее. и вроде как создаются они. а вот просто куб создаваться по прежнему не хочет.

вот что из тех-поддержки прислали:
Цитата:

Hey, dear Unity user.

Thank you for submitting a bug to Unity.

We have identified this issue as a duplicate of an existing known bug(that our developers working, and this connected to GPU you use) and we will be closing the issue. The information you have supplied will help us further in the resolution.

If you have further questions, feel free to contact us.

Regards, Vitaly QA Unity
везде наши люди! =) вот и там виталий... =)

но вот как мне заставить юньку работать я так и не понял. о_0

HolyDel 15.08.2013 18:13

Ответ: Вопросы от новичка
 
Ждать пока ее починит Виталий, очевидно же )))

seaman 16.08.2013 01:57

Ответ: Вопросы от новичка
 
Ну, если они старый баг до сих пор не исправили,- возможно долго ждать придется. Быстрее другой комп найти. С нормальной видяхой.

pax 16.08.2013 07:36

Ответ: Вопросы от новичка
 
Попробуй использовать OpenGL, а не DirectX для редактора:
http://docs.unity3d.com/Documentatio...Arguments.html
Цитата:

-force-opengl (Windows only)
Make the editor use OpenGL for rendering, even if Direct3D is available. Normally Direct3D is used but OpenGL is used if Direct3D 9.0c is not available.

WISHMASTER35 16.08.2013 15:18

Ответ: Вопросы от новичка
 
Как думаете прикрутить к юнити другой физический движок очень сложно?
Хочется мне попробовать поюзать в юнити Newton Game Dynamics.
Что-то этот PhysX либо сам по себе работает только на скорость, либо юнити что-то напортачили. Кстати, почему он в юнити не поддерживает ускорение на видюхе?
Как брать и таскать предметы физикой как в амнезии я так и не понял за почти пару лет. Все что сделал, лишь напоминает Амнезию.

RegIon 16.08.2013 18:38

Ответ: Вопросы от новичка
 
http://www.unity3d-france.com/unity/...-la-half-life/
ток тут про гравитиган, но чуток помудрить и амнезия)

ибо не на всех платформах физикс ускаряется на гпу,. так же в юнити он собран. собственны. модулем, бля той юе кроссплатформенности (ты не найдешь библиотеки physix.dll и подобные)
на unrial играх я не могу запустить ускорение, кроме как на мирорс эйдж., хотя. nvidia physx demo, работает на гпу.

ARA 16.08.2013 20:34

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 265397)
Как думаете прикрутить к юнити другой физический движок очень сложно?

Лучше руки к плечам прикрутить

Цитата:

Что-то этот PhysX либо сам по себе работает только на скорость, либо юнити что-то напортачили.
Конечно Юнити напортачили, ведь там одни мудаки работают.
Аккуратность физики где-то тут настраивается. Давно с физикой уже не работал. Потыкай.

WISHMASTER35 16.08.2013 23:18

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от RegIon (Сообщение 265412)
http://www.unity3d-france.com/unity/...-la-half-life/
ток тут про гравитиган, но чуток помудрить и амнезия)

ибо не на всех платформах физикс ускаряется на гпу,. так же в юнити он собран. собственны. модулем, бля той юе кроссплатформенности (ты не найдешь библиотеки physix.dll и подобные)
на unrial играх я не могу запустить ускорение, кроме как на мирорс эйдж., хотя. nvidia physx demo, работает на гпу.

Я больше года мудрил и не вышло как в амнезие.
НУ ясно, что на мобильных платформах не ускорить, а на ПК почему бы и не сделать ускорение. Вообще я твой пост полностью понять не смог, написал ты его как-то ужасно.

WISHMASTER35 16.08.2013 23:54

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от ARENSHI (Сообщение 265414)
Лучше руки к плечам прикрутить


Конечно Юнити напортачили, ведь там одни мудаки работают.
Аккуратность физики где-то тут настраивается.

А хамить не надо! Попробуй сам сделать такое таскание предметов. Чтобы предмет не отставал от руки при вращении камеры его надо двигать с огромной для физики скорости. Физика с этим никак не справляется.

При движении через body.MovePosition тело проходит через все коллайдеры. Rigidbody.collisionDetectionMode никак не влияет на это. Еще и дрожание будет из-за движения в FixedUpdate, хотя это можно легко исправить, если вызывать чаще этот апдейт, но тогда производительность очень быстро падает.
Solver Iteration Count сколько будет итераций решения коллизии т.е. оно надо, когда объект залазит в какой-то угол т.е. тут не поможет.
Min Penetration For Penalty - на сколько объекты могут проваливаться друг в друга. Кажется это сделано чтобы объекты не дрожали при коллизии. Вообщем тоже не то.
И другие параметры мне никак не помогут.

При движении через AddForce тело отстает от руки и как на резинки летает вокруг руки(хотя тут можно вручную уменьшать скорость при приближении к руке). Да и если придавать объекту огромную силу, то он будет встревать при коллизии в другие объекты либо другие объекты будут отлетать как от ядерного взрыва.

Что еще посоветуешь?
Лучшее, что я пока придумал это проверять есть ли рядом с предметом в определенном радиусе другие коллайдеры и если есть, то двигать физикой через AddForce. Иначе двигать без всякой физики. Вообщем-то не плохо работает, только когда объект трется обо что-то или просто рядом с чем-то, то сразу начинает отставать от курсора.
Кстати, Physics.SphereCast работал через раз, поэтому использую просто Physics.CheckSphere.
Вообщем вот можешь глянуть http://www.youtube.com/watch?v=UAsM9lPJTxw
А вот как в амнезии http://www.youtube.com/watch?v=Mke9FsuSEBA
Что интересно при коллизии объект может повернутся, но после окончания коллизии объект поворачивается в исходные свои углы.
Есть еще идеи как это сделать?

И кстати, в юнити конечно не все мудаки, но судя из их скриптов они там точно есть. Хотя я пока проблемы имел только с редактором и GUI. Как с остальным дела обстоят не знаю, быть может они и с физикой что-то не доделали.

seaman 17.08.2013 02:27

Ответ: Вопросы от новичка
 
Physics в Юнити урезанный. Во всяком случае ко многому доступа нет. Не знаю кто виноват, Юнитект, или сам Physics, но объекты проскакивают коллайдеры даже при невысокой скорости. Если сильно уменьшать FixedTime, то при небольшой скорости объектов можно избавиться от пролета коллайдеров. Но при этом возможны тормоза именно из-за низкого FixedTime.
Вообще Physics достаточно тормозной. Нео на русском форуме, и еще один пользователь прикручивали к Юнити Jitter. Можно посмотреть тут:
Форум
Говорят значительно быстрее работает. Но готового решения никто не выложил.

RegIon 17.08.2013 06:08

Ответ: Вопросы от новичка
 
sourceforge.net/projects/newton-dotnet/
WISHMASTER35, нужен ньютон, то хотя бы можно было загуглить, не?
спецификацию сам найдешь, или тоже погуглить?
пс: реально накалять начинаешь.

HolyDel 17.08.2013 06:09

Ответ: Вопросы от новичка
 
solver iteration count не пробовал увеличивать?
кроме обрезанного функционала в юнити не должно быть отличий от обычного физикса. физикс он и в юнити физикс.

WISHMASTER35 17.08.2013 13:37

Ответ: Вопросы от новичка
 
seaman, вот я и думаю, что возможно не хватает какого-то функционала. В UDK делали такое и в dead space и в демках UDK4 видел.
RegIon, я не дебил и конечно гуглил на эту тему. Во первых этот врапер под Net и не уверен, что он будет работать под Mono, во вторых я видел какие-то темы о проблемах с этим врапером, в третьих все равно под компонентную систему юнити надо переписывать или дописывать.
Хотя последний апдейт там свежий и думаю автор быстро исправляет ошибки.
Впрочем скачав исходники ньютона я понял, что ума у меня не хватит это портануть)

WISHMASTER35 17.08.2013 14:03

Ответ: Вопросы от новичка
 
Почитав тему JPhysics aka Jitter я буквально поменял взгляды на мир)
Если сторонний движок работает быстрее, чем родной physX, то это ужасно для юнити. Хотя если верить некоторым постам из той темы, то физику в юнити прикрутили для галочки. Еще и версию старую.
Хотя в той теме и сам PhysX ругают, но не верится, что с самим PhysX есть проблемы.
Если уж так, то юнити стоило бы сделать, чтобы некоторые модули движка можно было полностью отключать, чтобы не мешались. Но кто ж это сделает. Одна надежда на анархию от хавка, ибо конкуренция заставляет быстрее двигаться.

RegIon 17.08.2013 18:26

Ответ: Вопросы от новичка
 
мм, по сути моно<->.net , я цеплял bass.net и lua.net . можно даже не .нет длл инклудить в юнити, это больше мозго*бства, но выполнимо вполне.
моно тупо кроссплатформенное.

могу предложит взять старый добрый врапер от блитц3д и использовать dllcall , все это дело закинешь в папку plugins , правда работать будет под виндой только, и станешь одним из тех, кому не проще использовать то что есть.

WISHMASTER35 17.08.2013 19:04

Ответ: Вопросы от новичка
 
RegIon, не проще? А может ты мне скажешь как сделать такое движение объекта?

seaman 18.08.2013 02:26

Ответ: Вопросы от новичка
 
Я вот с физикой Юнити никак не могу подружиться :(
Вот сейчас. Использую Меканим. Делаю прыжок. Во время transition в состояние прыжка (их у меня несколько в зависимости от того стоит перс или идет) толкаю перса вверх силой. Типа так:
Код:

public void FixedUpdate()
{
  ...
  foreach (string transition in __addForceTransition)
  {
      if(!ainf.IsUserName(transition)) continue;
      __anim.applyRootMotion = false;
      rigidbody.AddForce(Vector3.up * jumpHeight, ForceMode.Impulse);
      __jumpStart = true;
      break;
    }

Прыгает. Однако в зависимости от его скорости прыгает на разную высоту! Если стоит - невысоко, если идет - гораздо выше.
Как горизонтальная скорость может влиять на действие силы по вертикали? :dontknow:
Иногда ни с того ни с сего вдруг вообще улетает в небеса! Зависимости таких "полетов" вычислить не смог.
Как его вообще толкать, так чтобы он подлетал на одну высоту не зависимо от предыдущих действий?

RegIon 18.08.2013 06:47

Ответ: Вопросы от новичка
 
use physics. в настройках animator'a?
надо снять
по ходу несколько раз срабатывает addForce, поставь интератор туда, и выведи в дебаг количество addForce за один прыжко.

HolyDel 18.08.2013 06:53

Ответ: Вопросы от новичка
 
и jumpHeight тоже выводи на всякий случай. вдруг где-то меняешь.

seaman 18.08.2013 11:11

Ответ: Вопросы от новичка
 
Цитата:

по ходу несколько раз срабатывает addForce
Трах-ти-би-дох! Действительно. И высота разная из-за разно числа срабатываний. Будем исправлять.
Спасибо.

WISHMASTER35 20.08.2013 19:16

Ответ: Вопросы от новичка
 
Вложений: 1
seaman, а с чего ты решил делать физику персонажа на RigidBody?
Я раньше тоже это хотел, но из-за одной проблемы перехотел.
При коллизии со стеной состоящей из нескольких блоков будет не правильно определяться нормаль. Из-за этой нормали Character подумает, что он стоит на земле и может прыгать по стене вверх.
На рисунке видно, что нижняя нормаль поднята вверх. Этого можно избежать, если уменьшить min penetration for penalty, но тогда появляется дрожание.
Вообще проблема PhysX CharacterController лишь в том, что он вообще не умеет выталкивать себя из других коллайдеров. Из-за этого сделать поднимающуюся платформу нельзя. Ну или как-то костылями.
Ну и толкать другие тела он не может, хотя это можно сделать вручную.

seaman 20.08.2013 20:40

Ответ: Вопросы от новичка
 
Цитата:

проблема PhysX CharacterController лишь в том
Проблема CharacterController в том, что капсула одна на всего игрока. Нормаль чуть вверх из-за того, что капсула. У нее внизу закругление, оттого и чуть вверх. Ну а Ригидбоди тут не при чем. Столкновение и нормали считаются с капсулой.
У меня перс изначально такой:

После начала игры становится таким:

Коллайдеры на ногах маленькие - должен нормально определять коллизии. Правда возникает другое - он локтями за выступы цепляется :)

WISHMASTER35 21.08.2013 15:47

Ответ: Вопросы от новичка
 
Цитата:

Нормаль чуть вверх из-за того, что капсула. У нее внизу закругление, оттого и чуть вверх.
Только стена полностью ровная и капсула расположенная параллельно не должна касаться своей круглой частью. Но min penetration for penalty делаеь это возможным.
Я вот не пойму как эта проблема решается в CharacterControler. Похоже там капсула не может проникать в коллайдеры, а от тряски спасает Min Move Distance.
А зачем столько коллайдеров? Такие либо для инверсной кинематики делают, либо для файтингов.

Amatsu 21.08.2013 17:18

Ответ: Вопросы от новичка
 
Не завалялся ли случаем у кого-нибудь вершинный волновой шейдер? Что-то типа http://youtu.be/0muOJu44ZNE
Заранее спасибо

WISHMASTER35 21.08.2013 22:30

Ответ: Вопросы от новичка
 
Вложений: 1
Amatsu, попробовал написать что-то подобное.

Код:

Shader "Custom/BlastWaveShader" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
                _Point  ("Point", Vector) = (0,0,0,0)
                _Radius  ("Radius", Float) = 0.5
        }
        SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
                #pragma surface surf Lambert vertex:vert

                sampler2D _MainTex;
                float4 _Point;
                float _Radius;

                struct Input {
                        float2 uv_MainTex;
                        float4 color : COLOR;
                };
               
                void vert (inout appdata_full v) {
                float3 pos =    mul (_Object2World, v.vertex).xyz;
                    float3 center = mul (_Object2World, _Point).xyz;
                   
                    float dis = length( pos - center );
                    if(dis > _Radius) dis = _Radius - (dis - _Radius);
                    dis /= _Radius;
                    dis = saturate(dis);
                    dis = pow(dis, 5);
                   
                    v.color = float4(dis, 0, 0, 1);
                    v.vertex.y += dis*5;
              }

                void surf (Input IN, inout SurfaceOutput o) {
                        half4 c = tex2D (_MainTex, IN.uv_MainTex);
                        o.Albedo = c.rgb * IN.color.rgb;
                        o.Alpha = c.a;
                }
                ENDCG
        }
        FallBack "Diffuse"
}



Только бы оптимизировать, избавится от if. И надо как-то сделать сглаживание волны. А то сейчас на вулкан похоже)
Если доделаешь, то покажешь.

Почему в Unity 4.2 не работает этот https://www.assetstore.unity3d.com/#/content/8 пример?
Выдает ошибку You are trying to load data from a www stream which had the following error when downloading.
Couldn't open file /Projects/Unity Projects/Other Projects/Character Customization/Assets/Assets/assetbundles/CharacterElementDatabase.assetbundle.

И кстати, юнити, что не имеет своих инструментов для экспорта и импорта этих assetbundle?


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

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