forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вотпросы от mepihin! (http://forum.boolean.name/showthread.php?t=17716)

mepihin 30.01.2013 22:48

Ответ: Вотпросы от mepihin!
 
Слушайте, я вот в ступоре, что-то раньше делал, а сейчас не могу. Вот у меня есть CM, в котором есть функция Update() и есть мой скрипт Endurance, в котром есть это:
PHP код:

var endurance:float 6.0;
var 
shealendurance:boolean false;
var 
activespeed:boolean false;

function 
Update()
{
    if(
activespeed == trueendurance -= 1.0*Time.deltaTime;
    if(
endurance 0){ shealendurance trueactivespeed false; }
    if(
shealendurance == trueendurance += 1.0*Time.deltaTime;
    if(
endurance 6){ endurance 6shealendurance false; }


Мне надо сделать событие по нажатию на LShift ускорение игрока до 10, то есть я пишу:
PHP код:

if(Input.GetKey(KeyCode.LeftShift) && transform.GetComponent("Endurance").endurance && transform.GetComponent("Endurance").activespeed == false)
    {
        
transform.GetComponent("Endurance").activespeed true;
        
movement.maxForwardSpeed 10;
    } 

Но когда ставлю else условие или другое if в CM, то ничего не хочет правильно работать, не могли бы вы написать скриптик, чтобы в нем было примерно так:
нажал на шифт начала отниматься выносливость, отрустиль, воссстанавливаться, если < 0 то автоматически воостанавливается без возможности бега... Помогите пожалуйста

Okay 30.01.2013 23:18

Ответ: Вотпросы от mepihin!
 
Код:

var SpeedOgran = 100; // в начало скрипта
// условие в Update()
if(Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift)) // Проверяем персонажа на нажатие кнопок W и lshift
{
    if(controller.isGrounded) // Проверяем персонажа на земле он или нет
    {
        if(SpeedOgran > 0) // проверяем персонажа на количество выносливости
        {
            SpeedOgran -= 0.1;
        }
    }
}


mepihin 30.01.2013 23:30

Ответ: Вотпросы от mepihin!
 
Вот переделал скрипт, все работает почти как надо, вот только одна проблема, когда я отпускаю Shift, то у игрока остается скорость 10... Как исправить?
PHP код:

#pragma strict

var SpeedOgran 6.0;
var 
controller CharacterController
var 
motor CharacterMotor
var 
activeres false;

function 
Start()
{
    
controller GetComponent(CharacterController);
    
motor GetComponent(CharacterMotor);
}
function 
Update()
{
    if(
Input.GetKey(KeyCode.LeftShift) && activeres == false// Проверяем персонажа на нажатие кнопок W и lshift
    
{
        if(
controller.isGrounded && controller.velocity.magnitude 0.3// Проверяем персонажа на земле он или нет
        
{
            if(
SpeedOgran 0// проверяем персонажа на количество выносливости
            
{
                
SpeedOgran -= 1.0*Time.deltaTime;
                
motor.movement.maxForwardSpeed 10;
            }
            if(
SpeedOgran <= && activeres == false)
                {
                    
activeres true;
                    
motor.movement.maxForwardSpeed 6;
                }
        }

    }
    if(
activeres == trueSpeedOgran += 1.0*Time.deltaTime;
    if(
SpeedOgran 6){ SpeedOgran 6activeres false; }



seaman 30.01.2013 23:51

Ответ: Вотпросы от mepihin!
 
if(Input.GetKeyUp(KeyCode.LeftShift)) motor.movement.maxForwardSpeed =

RegIon 30.01.2013 23:55

Ответ: Вотпросы от mepihin!
 
Дык нужно было сначала сохранить старое значение в приватку, а потом если !shift,то присваивать её.Не?

mepihin 31.01.2013 17:30

Ответ: Вотпросы от mepihin!
 
Всем спасибо.

mepihin 31.01.2013 23:15

Ответ: Вотпросы от mepihin!
 
А как сделать деактивацию всех объектов, хранящие компонент AudioSource??? Можно скриптик... У меня коло 100 таких объектов

seaman 01.02.2013 00:00

Ответ: Вотпросы от mepihin!
 
Object.FindObjectsOfType(typeof(AudioSource))

mepihin 01.02.2013 18:34

Ответ: Вотпросы от mepihin!
 
PHP код:

public GameObject[] AOAS FindObjectsOfType(typeof(AudioSource)) as AOAS[];

AOAS.audio.Pause(); 

ошибка
Цитата:

`Pause.AOAS' is a `field' but a `type' was expected

Lestar 01.02.2013 18:48

Ответ: Вотпросы от mepihin!
 
Код:

AudioSource[] AOAS = FindObjectsOfType(typeof(AudioSource)) as AudioSource[];
      for (int i = 0; i < AOAS.Length; i++)
            {
                AOAS[i].Pause();
            }


mepihin 01.02.2013 19:13

Ответ: Вотпросы от mepihin!
 
Цитата:

Сообщение от Lestar (Сообщение 251369)
Код:

AudioSource[] AOAS = FindObjectsOfType(typeof(AudioSource)) as AudioSource[];
      for (int i = 0; i < AOAS.Length; i++)
            {
                AOAS[i].Pause();
            }


Спасибо, но вот как теперь продолжать то звук???
PHP код:

using UnityEngine;
using System.Collections;

public class 
Pause MonoBehaviour {
    
    public 
bool IsPause false;
    private 
CharacterController controller;
    
void Start()
    {
        
controller transform.GetComponent<CharacterController>();    
    }
    
    
void Update()
    {
        
AudioSource[] AOAS FindObjectsOfType(typeof(AudioSource)) as AudioSource[];
        if(
Input.GetKeyDown(KeyCode.Escape) && IsPause == false && controller.isGrounded)
        {
            
Time.timeScale 0;
            
transform.GetComponent<MouseLook>().enabled false;
            
transform.FindChild("Main Camera").GetComponent<MouseLook>().enabled false;
                  for (
int i 0AOAS.Lengthi++)
                    {
                        
AOAS[i].Pause();
                    }
            
IsPause true;
        }
        else
        {
            if(
Input.GetKeyDown(KeyCode.Escape) && IsPause == true)
            {
                
Time.timeScale 1;
                
transform.GetComponent<MouseLook>().enabled true;
                
transform.FindChild("Main Camera").GetComponent<MouseLook>().enabled true;
                  for (
int i 0AOAS.Lengthi--)
                    {
                        
AOAS[i].Play();
                    }                
                
IsPause false;
            }                
        }
    }
    



mepihin 01.02.2013 22:25

Ответ: Вотпросы от mepihin!
 
Подскажет кто нет? как реализовать в скрипте выше воспроизведение всех звуков обратно

Lestar 01.02.2013 22:32

Ответ: Вотпросы от mepihin!
 
Ты пишешь
Код:

for (int i = 0; i > AOAS.Length; i--)
                    {
                        AOAS[i].Play();
                    }

То есть ты пытаешься так же и за границей коллекции оперировать ее элементами. Причем через декремент i. Корректно же
Код:

for (int i = 0; i < AOAS.Length; i++)
                    {
                        AOAS[i].Play();
                    }


mepihin 01.02.2013 22:50

Ответ: Вотпросы от mepihin!
 
Цитата:

Сообщение от Lestar (Сообщение 251406)
Ты пишешь
Код:

for (int i = 0; i > AOAS.Length; i--)
                    {
                        AOAS[i].Play();
                    }

То есть ты пытаешься так же и за границей коллекции оперировать ее элементами. Причем через декремент i. Корректно же
Код:

for (int i = 0; i < AOAS.Length; i++)
                    {
                        AOAS[i].Play();
                    }


Спасибо, я просто думал, что надо делать обратное действие...

mepihin 02.02.2013 22:27

Ответ: Вотпросы от mepihin!
 
PHP код:

#pragma strict

var IsWalking:boolean false;

function 
Update () {
    if(
Input.GetKeyDown(KeyCode.C) && IsWalking == false)
    
// авто движение включено
    
else
    {
        if(
Input.GetKeyDown(KeyCode.C) && IsWalking == true)
        
//авто движение отключено
    
}


Как сделать автодвижение вперед???


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

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