|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
06.01.2013, 03:02
|
#46
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Вотпросы от mepihin!
то есть наеисать отжельный скрипт в кгтгром есть функция он триггер ентер с проверкой на игрока? Но тогда как сделать проверку на игрока? Сетка как никак
|
(Offline)
|
|
06.01.2013, 10:53
|
#47
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вотпросы от mepihin!
А что, игрок не у каждого клиента есть?. У каждого клиента модель подойдет к триггеру, он и откроется.
|
(Offline)
|
|
06.01.2013, 14:30
|
#48
|
ПроЭктировщик
Регистрация: 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
|
ПроЭктировщик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вотпросы от mepihin!
Правильно - скрипт для двери вешать на дверь или триггер двери. А не собирать все в скрипте игрока.
|
(Offline)
|
|
06.01.2013, 21:41
|
#51
|
ПроЭктировщик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вотпросы от mepihin!
в задании не было сказано, что дверь надо открывать на кнопку, был обозначен триггер и все. Из этого последовал ответ, что триггер должен сам дверь открыть.
В твоем случае надо посылать OpenDoor(); и CloseDoor(); как RPC
|
(Offline)
|
|
07.01.2013, 14:38
|
#53
|
ПроЭктировщик
Регистрация: 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
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Вотпросы от mepihin!
Вот возник вопрос:
Я хочу сделать пр нажатии на E спавн луча и проверку на соприкосновение с объектом, имеющий триггер "letter", и дистанцую в 5 меторов. Как мне сделать это? Подкиньте код.
if(Input.GetKeyDown(KeyCode.E)) { if (Physics.Raycast (transform.position, -Vector3.up, hit, 100.0)) { var distanceToGround = hit.distance; } }
Так не выходит
|
(Offline)
|
|
08.01.2013, 20:21
|
#55
|
ПроЭктировщик
Регистрация: 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.position, DirectionRay,Hit,Range)) { if(Hit.collider.tag == "letter" ) { Destroy(Hit.collider.gameObject); } }
}
|
(Offline)
|
|
08.01.2013, 20:36
|
#56
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вотпросы от mepihin!
function Atake() { var child: Transform = transform.FindChild("BACKPACK1"); var Hit : RaycastHit; if(Physics.Raycast(child.position, child.forward,Hit,Range)) { if(Hit.collider.tag == "letter" ) { Destroy(Hit.collider.gameObject); } } }
|
(Offline)
|
|
08.01.2013, 20:44
|
#57
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Вотпросы от mepihin!
Никак
|
(Offline)
|
|
08.01.2013, 20:59
|
#58
|
Знающий
Регистрация: 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
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Вотпросы от mepihin!
Нет, все работает теперь хорошо, но вот не могу увеличить длину луча:
var Range : float = 1000.0;
function Update() { if(Input.GetKey(KeyCode.E)) { Debug.DrawRay (transform.position, transform.forward, Color.green); Atack(); } }
function Atack() { var forward : Vector3 = transform.TransformDirection(Vector3.forward) * 10; var Hit : RaycastHit; if(Physics.Raycast(transform.position, transform.forward,Hit,Range)) { if(Hit.collider.tag == "letter" ) { Destroy(Hit.collider.gameObject); } }
}
Он все равно одной длины
|
(Offline)
|
|
08.01.2013, 21:37
|
#60
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вотпросы от mepihin!
О длине какого луча Вы говорите? Если DrawRay,- так задавайте в нем длину. Если Raycas, - как вы определяете, что она не меняется.
ЗЫ: заем Вам вообще forward : Vector3?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:25.
|