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 06.07.2012 22:34

Ответ: Вопросы от новичка
 
Phyton, по-моему способ создания никак не связан со скоростью обработки твоих ботов в игре. Если конечно эти 20 ботов не будет каждую секунду умирать и создаваться заново. Респавни убитого бота и не создавай нового. Хотя не думаю, что создать нового будет так медленно.

Не в тему, но ни у кого нет идей как сделать мягкое приземлении диаманта при падении? Т.е. чтобы он сначала немного проваливался в другой диамант, а потом как бы всплывал.

Сейчас у меня метод падения диаманта выглядит так
Код:

        public void Fall(float height) {
                speed += 18*Time.deltaTime;
                speed = Mathf.Clamp(speed, 4, 100);
               
                Vector2 oldPosition = position;
                position.y -= speed*Time.deltaTime;
               
                if(position.y < height) {
                        position.y = height;
                }
                speed = (oldPosition.y - position.y)/Time.deltaTime;
               
                if( Mathf.Abs(speed) <= float.Epsilon ) speed = 0;
        }

Как не пробовал сделать все равно какая-то фигня.

is.SarCasm 06.07.2012 22:51

Ответ: Вопросы от новичка
 
Phyton, Я написал ботов для своего шутера (поиск пути, атака, выбор оружия, распределение приоритетов,смерть, прыжки, поиск ближайших врагов\бонусов). 128 ботов в виде капсул воюют между собой без падения фпс. Так что, мне кажется, что магии оптимизации тут не надо.

FREE MAN 06.07.2012 23:23

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

Сообщение от is.SarCasm (Сообщение 232344)
Phyton, Я написал ботов для своего шутера (поиск пути, атака, выбор оружия, распределение приоритетов,смерть, прыжки, поиск ближайших врагов\бонусов). 128 ботов в виде капсул воюют между собой без падения фпс. Так что, мне кажется, что магии оптимизации тут не надо.

капсулы это капсулы, речь идёт об анимированых моделях...

pax 06.07.2012 23:36

Ответ: Вопросы от новичка
 
Если сейчас тормозит, ждите Unity 4.0, там будет инстансинг анимированных мешей и возможность вмешиваться в пайплайн их рендеринга вроде. Правда не заню DirectX 11 это будет или на девятом буедт работать...

is.SarCasm 07.07.2012 10:43

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

капсулы это капсулы, речь идёт об анимированых моделях...
Тогда тебе это не подвластно...пока.

cahekp 07.07.2012 13:18

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

Сообщение от Phyton (Сообщение 232349)
капсулы это капсулы, речь идёт об анимированых моделях...

Капсулы - это коллайдер. Анимированная модель - это меш. Две разные штуки для двух разных целей. Одна для физики, другая - для визуализации. Не понимаю, почему ты не хочешь использовать их вместе. Для ботов - это более, чем достаточно.

Или ты хочешь, чтобы физ.модель работала точь-в-точь как настоящая? Чтоб каждый треугольник на анимированной модели взаимодействовал с окружающим миром? Ну... Такого не бывает. :)

FREE MAN 07.07.2012 13:50

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

Сообщение от cahekp (Сообщение 232372)
Капсулы - это коллайдер. Анимированная модель - это меш. Две разные штуки для двух разных целей. Одна для физики, другая - для визуализации. Не понимаю, почему ты не хочешь использовать их вместе. Для ботов - это более, чем достаточно.

Или ты хочешь, чтобы физ.модель работала точь-в-точь как настоящая? Чтоб каждый треугольник на анимированной модели взаимодействовал с окружающим миром? Ну... Такого не бывает. :)

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

is.SarCasm 07.07.2012 14:03

Ответ: Вопросы от новичка
 
Дело в моделях. От того что они будут выполнять разные действия фпс скорее всего не изменится( так как там нагрузка на видеокарту, а тут на проц). Может у тебя там по 2лимона полигонов? :)

cahekp 07.07.2012 14:04

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

Сообщение от Phyton (Сообщение 232374)
дело в том что я поставил 8 анимированных моделей в сцену и фпс резко падает, а что будет когда они начнут стрелять, и выполнять разные действия...

Так у тебя проблема не с оптимизацией ботов как таковых, а просто с анимированными моделями. Тьфу ты. Путаешь нас тут. )

Сколько треугольников содержит каждая из моделей? И сколько костей имеет каждая из них? Такое ощущение, что они у тебя очень тяжеловесные.

pie 09.07.2012 15:13

Ответ: Вопросы от новичка
 
По поводу миксования анимаций. Этот вопрос уже рассматривался мной. Раньше работало. Теперь не работает. Вот код:
PHP код:

using UnityEngine;
using System.Collections;

public class 
WeaponAnimation MonoBehaviour {
    
    public 
AnimationClip akIdle;
    public 
Transform torce;
    
    public 
void Start () {
        
animation[akIdle.name].wrapMode WrapMode.Clamp;
        
animation[akIdle.name].layer 1;
        
animation.Stop();
        
animation[akIdle.name].AddMixingTransform(torce);
    }
    
    public 
void Update () {
        
animation.CrossFade(akIdle.name);
    }


В чем может быть причина? У меня 4 кости спины (spine, spine1, spine2, spine4). Я проверял каждую - безрезультатно.
PS: Анимация хотьбы, idle сделана с помощью locomotion.

WISHMASTER35 09.07.2012 18:11

Ответ: Вопросы от новичка
 
Сделал, чтобы мои диаманты мягко приземлялись) https://dl.dropbox.com/u/55489242/Di...WebPlayer.html Нормально выглядит?
После того как черт знает сколько поломал с этим голову решил тупо в корутине за несколько кадров смещать диамант сначала вниз, а потом вверх на исходную позицию)
Код:

public void Fall(float height) {
                float oldSpeed = speed;
                speed += 18*Time.deltaTime;
                speed = Mathf.Clamp(speed, 4, 12);
               
                Vector2 oldPosition = position;
                position.y -= speed*Time.deltaTime;
               
                position.y = Mathf.Max(position.y, height);
                speed = (oldPosition.y - position.y)/Time.deltaTime;
               
                if( Mathf.Abs(speed) <= float.Epsilon ) speed = 0;
               
                if(!playingAnimation && speed < oldSpeed) {
                        playingAnimation = true;
                        float k = (oldSpeed-4)/(12-4);
                        StartCoroutine( LandingAnimation(oldSpeed, k) );
                }
        }
       
        private IEnumerator LandingAnimation(float speed, float k) {
                speed *= 0.4f;
                k *= 0.3f;
                while(offset.y > -k) {
                        offset.y -= speed*Time.deltaTime;
                        if(offset.y < -k) offset.y = -k;
                        yield return null;
                }
               
                while(offset.y < 0) {
                        offset.y += speed*Time.deltaTime;
                        if(offset.y > 0) offset.y = 0;
                        yield return null;
                }
               
                playingAnimation = false;
        }


pie 09.07.2012 20:27

Ответ: Вопросы от новичка
 
Вложений: 2
Так. Вот что стало известно. Анимация по сути работает, но мне кажется что она распространяется только на ту кость которую я указал, а не на всю ветвь. Как можно сделать чтобы использовалась ветвь костей?

Код переписал:

PHP код:

using UnityEngine;
using System.Collections;

public class 
WeaponAnimation MonoBehaviour {
    
    public 
AnimationClip idle;
    public 
Transform spine;
    
    private 
void SetupGunAnimation (AnimationClip animationClip) {
        
AnimationState a animation[animationClip.name];
        
a.wrapMode WrapMode.Loop;
        
a.layer 1;
        
a.AddMixingTransform(spine);
    }
    
    public 
void Start () {
        
SetupGunAnimation(idle);
        
animation.CrossFade(idle.name);
    }
    
    public 
void Update () {
        
    }



pie 10.07.2012 14:09

Ответ: Вопросы от новичка
 
Есть какие нибудь соображения?

pie 11.07.2012 13:07

Ответ: Вопросы от новичка
 
Вложений: 1
Снова всем привет! С вышеописанной проблемой справился. Возникла новая. На этот раз с тенями. Подробности на скриншоте.

cahekp 11.07.2012 14:07

Ответ: Вопросы от новичка
 
Попробуй сделать поменьше Bias в настройках тени: http://docs.unity3d.com/Documentatio...ass-Light.html


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

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