|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
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, время: 15:23.
|