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

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

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

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

Ответ
 
Опции темы
Старый 06.01.2013, 03:02   #46
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

то есть наеисать отжельный скрипт в кгтгром есть функция он триггер ентер с проверкой на игрока? Но тогда как сделать проверку на игрока? Сетка как никак
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 10:53   #47
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вотпросы от mepihin!

А что, игрок не у каждого клиента есть?. У каждого клиента модель подойдет к триггеру, он и откроется.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 14:30   #48
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Я не понял. Вот у меня есть скрипт FPSInputController, который переделал. Там есть функция OnTriggerStay, в которой реализоана смерть игрока, а также тригер двери, что мне делать, чтобы не лагала система?
function CloseDoor()
{
    
networkView.RPC("SetDoorAnimation",RPCMode.All"close");
    yield 
WaitForSeconds(2);
    
dooractive false;
}

function 
OpenDoor()
{
    
networkView.RPC("SetDoorAnimation",RPCMode.All"open");
    yield 
WaitForSeconds(2);
    
dooractive true;
}

function 
OnTriggerStay(other:Collider)
{
    if(
networkView.isMine)
    {
        if(
other.tag == "fire")
        {
            
infire true;
        }
        if(
other.tag == "door" && dooractive == false && Input.GetKeyDown(KeyCode.E))
        {
            
OpenDoor();
        }
        if(
other.tag == "door" && dooractive == true && Input.GetKeyDown(KeyCode.E))
        {
            
CloseDoor();
        }                
    }
}

@
RPC
function SetDoorAnimation(DooranimationName:System.String)
{
    
GameObject.FindGameObjectWithTag("door").animation.CrossFade(DooranimationName);

То есть хочу этот скрипт сделать универсальным для каждой двери + чтобы не лагало
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 18:23   #49
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Вопрос:
Вот у меня есть префаб игрока, у которо есть удочеренный объект. На основном префабе висит Audio Source/listner, а на удочеренном Audio Source, также NetworkView.
На основной префебаме мой скрипт, который гасит звук чужого игрока(то есть если не я то нафиг звуки), НО я слышу только чужой звук хотьбы, а не свой. В чем касяк?
#pragma strict

function Awake()
{
    if(!
networkView.isMine)
    {
        
transform.GetComponent(AudioSource).enabled false;
        
transform.FindChild("FULL_MAX005").GetComponent(AudioSource).enabled false;
    }

У главного префаба параметр NetworkView - Realabe... и у удочеренного тоже самое. Если говорить точнее, то при подключение игрока к серверу все не слышат свои звуки, а слышат только чужую хотьбу, находясь рядом с ними
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 18:24   #50
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вотпросы от mepihin!

Правильно - скрипт для двери вешать на дверь или триггер двери. А не собирать все в скрипте игрока.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 21:41   #51
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

И чтоже это получается?
Типо вот скрипт на открытие двери:
function OnTriggerStay(other:Collider)
{
    if(
networkView.isMine)
    {
        if(
other.tag == "Player" && dooractive == false && Input.GetKeyDown(KeyCode.E))
        {
            
OpenDoor();
        }
        if(
other.tag == "Player" && dooractive == true && Input.GetKeyDown(KeyCode.E))
        {
            
CloseDoor();
        }                
    }

Так для сетки?

Ну вот я так сделал, но лаги все равно остались
(Offline)
 
Ответить с цитированием
Старый 06.01.2013, 23:13   #52
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вотпросы от mepihin!

в задании не было сказано, что дверь надо открывать на кнопку, был обозначен триггер и все. Из этого последовал ответ, что триггер должен сам дверь открыть.
В твоем случае надо посылать OpenDoor(); и CloseDoor(); как RPC
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.01.2013, 14:38   #53
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Вот блин вопрос:
Почему я не могу получить переменную из моего скрипта в Character Motor. То есть мне нужно использовать переменную из моего скрипта FPSController в моторе.
Делаю так:
private var fpscontroller GameObject;

function 
Awake () {
    
controller GetComponent (CharacterController);
    
tr transform;
    
fpscontroller GetComponent("FPSController");
}

function 
Update () {
    if (!
useFixedUpdate)
        
UpdateFunction();
    if(
Input.GetKey(KeyCode.LeftShift) && fpscontroller.speedactive == true)
    {
        
movement.maxForwardSpeed 6.0;
    }
    if(!
Input.GetKey(KeyCode.LeftShift) && fpscontroller.speedactive == false)
    {
        
movement.maxForwardSpeed 3.0;
    }
    else
    {
        if(!
Input.GetKey(KeyCode.LeftShift) && fpscontroller.speedactive == true)
        {
            
movement.maxForwardSpeed 3.0;
        }
    }
    if(
Input.GetKey(KeyCode.LeftShift) && fpscontroller.speedactive == false)
    {
        
movement.maxForwardSpeed 3.0;
    }

Пишет вот что:
Assets/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js(340,61): BCE0019: 'speedactive' is not a member of 'UnityEngine.GameObject'.
Во всех строках где это есть. Перменная такая существует!
Делал иначе:
if(Input.GetKey(KeyCode.LeftShift) && gameObject.transform.GetComponent("FPSController").speedactive == false)
    {
        
movement.maxForwardSpeed 3.0;
    } 
Пишет вот так:
Assets/Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor.js(337,9: BCE0019: 'speedactive' is not a member of 'UnityEngine.Component'.
Еще вот так пытался:
transform.transform.GetComponent("FPSController").speedactive 
Аналогичная ошибка, что мне делать?
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 19:05   #54
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Вот возник вопрос:
Я хочу сделать пр нажатии на E спавн луча и проверку на соприкосновение с объектом, имеющий триггер "letter", и дистанцую в 5 меторов. Как мне сделать это? Подкиньте код.
if(Input.GetKeyDown(KeyCode.E))
         {
                 if (
Physics.Raycast (transform.position, -Vector3.uphit100.0)) 
                 {        
                     var 
distanceToGround hit.distance;    
                 }
         } 
Так не выходит
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 20:21   #55
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Вот я сделал так:
Но вот что-то не хочет работать:
function Atake()
{
    var 
DirectionRay Vector3 transform.FindChild("BACKPACK1").TransformDirection(Vector3.forward); 
    var 
Hit RaycastHit;
    if(
Physics.Raycast(transform.positionDirectionRay,Hit,Range))
    {
        if(
Hit.collider.tag == "letter" )
        {
            
Destroy(Hit.collider.gameObject);
          } 
      } 


(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 20:36   #56
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вотпросы от mepihin!

function Atake()
{
        var 
childTransform =  transform.FindChild("BACKPACK1");
 
        var 
Hit RaycastHit;
        if(
Physics.Raycast(child.positionchild.forward,Hit,Range))
        {
                if(
Hit.collider.tag == "letter" )
                {
                
Destroy(Hit.collider.gameObject);
                }
        }
 

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 20:44   #57
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Никак
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 20:59   #58
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Вотпросы от mepihin!

Нарисуйте линию. Может child.forward смотрит куда-то в бок.
Debug.DrawLine(child.position, child.position + 100 * child.forward, Color.white, 100.0f);
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 21:05   #59
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Вотпросы от mepihin!

Нет, все работает теперь хорошо, но вот не могу увеличить длину луча:
var Range float 1000.0;

function 
Update()
{
    if(
Input.GetKey(KeyCode.E))
    {
        
Debug.DrawRay (transform.positiontransform.forwardColor.green);    
        
Atack();
    }
}

function 
Atack()
{
    var 
forward Vector3 =  transform.TransformDirection(Vector3.forward) * 10;
    var 
Hit RaycastHit;
    if(
Physics.Raycast(transform.positiontransform.forward,Hit,Range))
    {
        if(
Hit.collider.tag == "letter" )
        {
            
Destroy(Hit.collider.gameObject);
          } 
      } 


Он все равно одной длины
(Offline)
 
Ответить с цитированием
Старый 08.01.2013, 21:37   #60
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Вотпросы от mepihin!

О длине какого луча Вы говорите? Если DrawRay,- так задавайте в нем длину. Если Raycas, - как вы определяете, что она не меняется.
ЗЫ: заем Вам вообще forward : Vector3?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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