|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
16.05.2014, 17:42
|
#31
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
Вообще так, там где цифра "1" - это тот самый объект, на котором висит скрипт, который мы тут пытаемся разобрать.
Там, где цифра "2" - это бот с ИИ, на котором висит другой скрипт Java, который требуется отключить с помощью 1-ого скрипта.
При всём этом нет никаких консольных ошибок и запуск игры даётся безприпятственно
|
(Offline)
|
|
16.05.2014, 18:11
|
#32
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
На pacan221 есть колайдер?
|
(Offline)
|
|
16.05.2014, 18:31
|
#33
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
хах, ну да, естественно) стал бы я проводить проверку на коллайдер)
не знаю играет ли это роли, но помимо коллайдера на нём ещё и CharacterController, его присутсвие обусловленно скриптом "AI2", коллайдер сделал дабы лучом попадать и из него вычислять сам объект, в котором обрубать скрипт
|
(Offline)
|
|
16.05.2014, 20:14
|
#34
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
CharacterController это тоже коллайдер. В общем хз что у тебя там такое, объект не находится в слое Ignore Raycast? Debug.DrawRay правильное направление показывает? Звук играет?
|
(Offline)
|
|
16.05.2014, 20:57
|
#35
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
Звук играет, но вот луч почему то не отрисовывается
|
(Offline)
|
|
16.05.2014, 20:59
|
#36
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
Попробуй рисовать луч каждый Update? хотя если звук работает, то должно быть все нормально...
|
(Offline)
|
|
16.05.2014, 23:38
|
#37
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
да не, с лучём всё в поряде оказалось, ну как и предполагалось, что дело не в нём
|
(Offline)
|
|
16.05.2014, 23:47
|
#38
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
лады, а как вместо отключение вызвать удаление компонента?
|
(Offline)
|
|
17.05.2014, 00:26
|
#39
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
решившись покапаться во 2 скрипте, начал думать что проблема таиться в нём, т.к. мне удалось углядеть, что галочка то в инспекторе всё таки снимается) но скрипт продолжает работать
var speed = 3.0; var rotationSpeed = 5.0; var shootRange = 15.0; var attackRange = 30.0; var shootAngle = 4.0; var dontComeCloserRange = 5.0; var delayShootTime = 0.35; var pickNextWaypointDistance = 2.0; var target : Transform; private var lastShot = -10.0; // Make sure there is always a character controller @script RequireComponent (CharacterController) function Start () { // Auto setup player as target through tags if (target == null && GameObject.FindWithTag("Player")) target = GameObject.FindWithTag("Player").transform; Patrol(); } function Patrol () { var curWayPoint = AutoWayPoint.FindClosest(transform.position); while (true) { var waypointPosition = curWayPoint.transform.position; // Are we close to a waypoint? -> pick the next one! if (Vector3.Distance(waypointPosition, transform.position) < pickNextWaypointDistance) curWayPoint = PickNextWaypoint (curWayPoint); // Attack the player and wait until // - player is killed // - player is out of sight if (CanSeeTarget ()) yield StartCoroutine("AttackPlayer"); // Move towards our target MoveTowards(waypointPosition); yield; } } function CanSeeTarget () : boolean { if (Vector3.Distance(transform.position, target.position) > attackRange) return false; var hit : RaycastHit; if (Physics.Linecast (transform.position, target.position, hit)) return hit.transform == target; return false; } function Shoot () { // Start shoot animation animation.CrossFade("fire", 0.3); // Wait until half the animation has played yield WaitForSeconds(delayShootTime); // Fire gun BroadcastMessage("Fire"); // Wait for the rest of the animation to finish yield WaitForSeconds(animation["fire"].length - delayShootTime); } function AttackPlayer () { var lastVisiblePlayerPosition = target.position; while (true) { if (CanSeeTarget ()) { // Target is dead - stop hunting if (target == null) return; // Target is too far away - give up var distance = Vector3.Distance(transform.position, target.position); if (distance > shootRange * 3) return; lastVisiblePlayerPosition = target.position; if (distance > dontComeCloserRange) MoveTowards (lastVisiblePlayerPosition); else RotateTowards(lastVisiblePlayerPosition); var forward = transform.TransformDirection(Vector3.forward); var targetDirection = lastVisiblePlayerPosition - transform.position; targetDirection.y = 0; var angle = Vector3.Angle(targetDirection, forward); // Start shooting if close and play is in sight if (distance < shootRange && angle < shootAngle) yield StartCoroutine("Shoot"); } else { yield StartCoroutine("SearchPlayer", lastVisiblePlayerPosition); // Player not visible anymore - stop attacking if (!CanSeeTarget ()) return; } yield; } } function SearchPlayer (position : Vector3) { // Run towards the player but after 3 seconds timeout and go back to Patroling var timeout = 3.0; while (timeout > 0.0) { MoveTowards(position); // We found the player if (CanSeeTarget ()) return; timeout -= Time.deltaTime; yield; } } function RotateTowards (position : Vector3) { SendMessage("SetSpeed", 0.0); var direction = position - transform.position; direction.y = 0; if (direction.magnitude < 0.1) return; // Rotate towards the target transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime); transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0); } function MoveTowards (position : Vector3) { var direction = position - transform.position; direction.y = 0; if (direction.magnitude < 0.5) { SendMessage("SetSpeed", 0.0); return; } // Rotate towards the target transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction), rotationSpeed * Time.deltaTime); transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0); // Modify speed so we slow down when we are not facing the target var forward = transform.TransformDirection(Vector3.forward); var speedModifier = Vector3.Dot(forward, direction.normalized); speedModifier = Mathf.Clamp01(speedModifier); // Move the character direction = forward * speed * speedModifier; GetComponent (CharacterController).SimpleMove(direction); SendMessage("SetSpeed", speed * speedModifier, SendMessageOptions.DontRequireReceiver); } function PickNextWaypoint (currentWaypoint : AutoWayPoint) { // We want to find the waypoint where the character has to turn the least // The direction in which we are walking var forward = transform.TransformDirection(Vector3.forward); // The closer two vectors, the larger the dot product will be. var best = currentWaypoint; var bestDot = -10.0; for (var cur : AutoWayPoint in currentWaypoint.connected) { var direction = Vector3.Normalize(cur.transform.position - transform.position); var dot = Vector3.Dot(direction, forward); if (dot > bestDot && cur != currentWaypoint) { bestDot = dot; best = cur; } } return best; }
|
(Offline)
|
|
17.05.2014, 10:36
|
#40
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
Тут все на корутинах, должно отключаться... а других скриптов на нем нет?
|
(Offline)
|
|
17.05.2014, 16:03
|
#41
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
Есть, AIAnimation, по идеи эти 2 скрипта вместе работают, т.к. 1 гоняет его по вейпоинтам, другой анимирует
var minimumRunSpeed = 1.0;
function Start () { // Set all animations to loop animation.wrapMode = WrapMode.Loop; // Except our action animations, Dont loop those animation["Take 001"].wrapMode = WrapMode.Once; // Put idle and run in a lower layer. They will only animate if our action animations are not playing animation["Take 001"].layer = -1; animation["Take 001"].layer = -1; animation["Take 001"].layer = -1; animation.Stop(); } function SetSpeed (speed : float) { if (speed > minimumRunSpeed) animation.CrossFade("Take 001"); else animation.CrossFade("Take 001"); }
|
(Offline)
|
|
17.05.2014, 16:08
|
#42
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
попробуй еще дописать
ston.animation.Stop();
|
(Offline)
|
|
17.05.2014, 17:09
|
#43
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
Assets/��������/�������/AIAnimation.js(15,9): BCE0005: Unknown identifier: 'ston'.
|
(Offline)
|
|
17.05.2014, 17:11
|
#44
|
ПроЭктировщик
Регистрация: 09.11.2007
Сообщений: 141
Написано одно полезное сообщение
|
Re: Активация скрипта по требованию
я бы уже если честно воспользовался бы каким нибудь другим способом реализации ИИ прохожих, если бы нашёл) я хотел сделать принцип, что люди ходят по путям, и если я начинаю битву с ними, то скрипт вейпоинтов отключается, и включается скрипт поведения драки какой нибудь, но вот что то не заладилось
|
(Offline)
|
|
17.05.2014, 17:30
|
#45
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Активация скрипта по требованию
Это надо было дописать туда же, где отключается AI2
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:50.
|