Программы+языки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программы+языки » Скрипты » Мультиплеер


Мультиплеер

Сообщений 1 страница 6 из 6

1

Вот эти два скрипта (не считая стандартных CharacterController'ов)

Код:
var remoteIP = "127.0.0.1"; 
 var remotePort = 25000; 
 var listenPort = 25000; 
 var useNAT = false; 
 var yourIP = ""; 
 var yourPort = ""; 

 function OnGUI () { 
 if (Network.peerType == NetworkPeerType.Disconnected){ 

 if (GUI.Button (new Rect(10,10,100,30),"Connect")){ 
 Network.useNat = useNAT; 
 Network.Connect(remoteIP, remotePort); 
 } 
 if (GUI.Button (new Rect(10,50,100,30),"Start Server")){ 
 Network.useNat = useNAT; 
 // Создание Сервера 
 Network.InitializeServer(32, listenPort); 
 // Сказать нашим объектам, что уровень и сеть готова к работе 
 for (var go : GameObject in FindObjectsOfType(GameObject)) 
 { 
 go.SendMessage("OnNetworkLoadedLevel",SendMessageOptions.DontRequireReceiver); 
 } 
 } 
 // Создаем поля  ip адрес и port 
 remoteIP = GUI.TextField(new Rect(120,10,100,20),remoteIP); 
 remotePort = parseInt(GUI.TextField(new 
 Rect(230,10,40,20),remotePort.ToString())); 
 } 
 else 
 { 
 // Получаем твой  ip адрес и port 
 ipaddress = Network.player.ipAddress; 
 port = Network.player.port.ToString(); 
 GUI.Label(new Rect(140,20,250,40),"IP Adress: "+ipaddress+":"+port); 
 if (GUI.Button (new Rect(10,10,100,50),"Disconnect")) 
 { 
 // Отключение от Сервера 
 Network.Disconnect(200); 
 } 
 } 
 } 
 function OnConnectedToServer () { 
 // Сказать всем объектам что сцена и сеть готовы 
 for (var go : GameObject in FindObjectsOfType(GameObject)) 
 go.SendMessage("OnNetworkLoadedLevel",SendMessageOptions.DontRequireReceiver); 
 }
Код:
var PlayerPrefab : GameObject; 
 var MinePlayer : GameObject; 

 function OnNetworkLoadedLevel () { 
 MinePlayer = Network.Instantiate(PlayerPrefab, transform.position, transform.rotation, 0); 
 } 

 function OnPlayerDisconnected (player : NetworkPlayer) { 
 Network.RemoveRPCs(player, 0); 
 Network.DestroyPlayerObjects(player); 
 }

0

2

Скрипт для перехода с одного уровня на другой

Код:
Application.LoadLevel ("1");

0

3

Отнятие жизни при падении с высоты
Буду краток:
Открываем CharacterMotor (Standard Assets/Character Controllers/Sources/Scripts/CharacterMotor) и пишем:

Код:
static var speed : Vector3; //Переменная "шпион", которая будет принимать значения скорости. 
 function Update () { 
 speed = velocity; //Присваиваем нашему шпиону значение скорости. 
 }

Далее открываем скрипт, висящий на игроке и хранящий в себе значение здоровья:

Код:
var health = 100; // Это здоровье 
 var speed1 = 0.0;   
 var speed2 = 0.0;   
 var speedA = true; 

 function Update () { 
 if (speedA == true) { Speed (); } // Включение функции определения удара 
 if (speed2 > 20) { health -= 100; } else { //Смертельное падение 
 if (speed2 > 15) { health -= 50; } else { //Опасное падение 
 if (speed2 > 10) { health -= 20; } } } // Лёгкое падение 
 } 

 function Speed () { // Сама функция определения падения 
 speedA = false; // Ставим функцию на паузу 
 speed1 = CharacterMotor.speed.y; // Записываем значение скорости движения по оси Y от нашего шпиона 
 yield WaitForSeconds (0.05); // Ждём 0.05 с 
 speed2 = speed - CharacterMotor.speed.y; //Находим разницу, между настоящей скоростью и скоростью 0.05 секундами ранее 
 speedA = true; //Включаем функцию. Она повторяется. 
 }

0

4

Скрипт автомобиля:

Код:
var parkovka = false; 
 var zaveden = false; 
 var pl : WheelCollider; 
 var pr : WheelCollider; 
 var zl : WheelCollider; 
 var zr : WheelCollider; 
 var maxturn = 60; 
 var peed = 50; 
 var COM : Transform; 
 var drift = 0; 
 var carspeed = 0; 
 var zavodka : AudioSource; 
 var dvigatel : AudioSource; 
 var zaglushka : AudioSource; 
 var zavesti = false; 
 var zaglushit = false; 

 function Start (){ 
 rigidbody.centerOfMass = COM.localPosition; 
 } 

 function Update () { 
 carspeed = rigidbody.velocity.magnitude; 
 if (Input.GetKeyUp("space")) { 
 parkovka = !parkovka; 
 } 
 if (Input.GetKeyUp("q")) { 
 zaveden = !zaveden; 
 } 
 var move = (Input.GetAxis("Vertical")); 
 var turn = (Input.GetAxis("Horizontal")); 
 if (parkovka) { 
 zl.brakeTorque = 100; 
 zr.brakeTorque = 100; 
 pr.brakeTorque = 100; 
 pl.brakeTorque = 100; 
 }else{ 
 zl.brakeTorque = 0; 
 zr.brakeTorque = 0; 
 pr.brakeTorque = 0; 
 pl.brakeTorque = 0; 
 } 
 Motor (move, turn); 
 if (Input.GetKeyUp("q")) { 
 if (zaveden){ 
 zavesti = true; 
 } 
 } 
 if (zavesti){ 
 zavodka.Play(1); 
 dvigatel.Play(1); 
 zavesti = false; 
 } 
 if (zaveden == false){ 
 zl.brakeTorque = 50; 
 zr.brakeTorque = 50; 
 pr.brakeTorque = 50; 
 pl.brakeTorque = 50; 
 if (Input.GetKeyUp("q")) { 
 zaglushit = true; 

 } 
 } 
 if (zaglushit){ 
 zaglushka.Play(1); 
 dvigatel.Pause(); 
 zaglushit = false; 
 } 
 } 

 function Motor (Speed, povorot){ 
 if (Speed == 0){ 
 zl.brakeTorque = 25; 
 zr.brakeTorque = 25; 
 pr.brakeTorque = 25; 
 pl.brakeTorque = 25; 
 }else{ 
 if (zaveden){ 
 zl.motorTorque = -Speed*peed; 
 zr.motorTorque = -Speed*peed; 

 } 
 } 
 dvigatel.pitch = Speed/peed*carspeed+1; 

 pl.steerAngle = povorot*maxturn; 
 pr.steerAngle = povorot*maxturn; 

 pl.steerAngle = povorot*maxturn; 
 pr.steerAngle = povorot*maxturn; 
 }

перед выездом заведите машину кнопкой q

0

5

Вот отличный скрипт для меню паузы.Просто создайте пустой обьект, и перекинте туда етот скрипт.

Код:
      
  //ширина и высота бокса  
         private  var boxWidth : float;  
         private  var boxHeight : float;  
         //GUISkin  
         var Logotip : Texture2D; 
          var guiSkin : GUISkin;  
         //переменные для кнопок  
         var buttonWidth : float;  
        var buttonHeight : float;  
         private  var pauseMainMenuEnabled : boolean= true;  
         private  var pauseOptionsMenuEnabled : boolean= false;  
         //булевые переменные для переключателей res1 - 1024x768 res2 - 1280x1024 res3 - 1680x1050  
         private  var res1 : boolean;  
         private  var res2 : boolean;  
         private  var res3 : boolean;  
          var boxRect : Rect;  
         //слушатели звука  
          var listner1 : AudioListener;  
          var listner2 : AudioListener;  
         //переменная для слайдера  
         private  var sliderFVolume : float;  
      function Start () : void {  
             //устанавливаем ширину и высоту бокса  
             boxHeight = Screen.height / 30;  
             boxWidth = Screen.width / 70;  
             //устанавливаем значения для кнопок  
             buttonWidth = Screen.width / 1;  
             boxRect = new Rect(450, 30, 450, 350);  
      }  

         function PauseMainMenuBtn ( windowid : int  ) : void {  
          GUI.Label(new Rect(80, 220, 300, 68), Logotip); 
            if(GUI.Button(new Rect(130, 80, 180, 40), " Продолжыть"))  

  { 
                 //выключаем курсор      
                 Screen.lockCursor = true;  
                 //возвращаем нормальную скорость времени  
                 Time.timeScale = 1;  
             }  
             //включаем менюшку для опций  
                 if (GUILayout.Button("Настройки"))  
                 {  
                     pauseOptionsMenuEnabled = true;  
                     pauseMainMenuEnabled = false;  
                 }  
             //назад в главное меню  
                 if(GUI.Button(new Rect(130, 150, 180, 40), "Меню"))  

  { 
                     Application.LoadLevel(0);  
                 }  
         }  

         function PauseOptionsMenuBtn ( windowid : int  ) : void {  
             //переключатели разрешения  
             if (GUILayout.Toggle(res1, "1024x768"))  
             {  
                 res1 = true;  
             }  
             if (GUILayout.Toggle(res2, "1280x1024"))  
             {  
                 res2 = true;  
             }  
             if (GUILayout.Toggle(res3, "1680x1050"))  
             {  
                 res3 = true;  
             }  
             //включаем разрешение  
             if (GUI.Button(new Rect(120, 150, 180, 40),"Применить"))  
             {  
                 if (res1 == true)  
                 {  
                     Screen.SetResolution(1024, 768, true);  
                 }  
                 if (res2 == true)  
                 {  
                     Screen.SetResolution(1280, 1024, true);  
                 }  
                 if (res3 == true)  
                 {  
                     Screen.SetResolution(1680, 150, true);  
                 }  
             }  
             //регулируем звук  
             sliderFVolume = GUILayout.HorizontalSlider(sliderFVolume, 0.0f, 1.0f);  
             if (GUI.Button (new Rect(120, 210, 180, 40),"Назад"))  
                 {  
                     pauseMainMenuEnabled = true;  
                     pauseOptionsMenuEnabled = false;  
                 }  
             }  

         function OnGUI () : void {  
             //включаем новый гуи скин  
             GUI.skin = guiSkin;  
             //если включен курсор включаем менюшку  
             if (Screen.lockCursor == false)  
             {  
                 pauseMainMenuEnabled = true;  
                 if(pauseMainMenuEnabled == true)  
                 {  
                     boxRect = GUILayout.Window(0, boxRect, PauseMainMenuBtn, "Пауза");  
                 }  
                 if (pauseOptionsMenuEnabled == true)  
                 {  
                      boxRect = GUILayout.Window(0, boxRect, PauseOptionsMenuBtn, "Настройки");  
                 }  
             }      
         }  
              
      function Update () : void {  
             //ставим паузу  
             if (Screen.lockCursor == false)  
             {  
                 Time.timeScale = 0f;  
             }  
             //если выбрано одно разрешение - выключаем другие  
             if (res1 == true)  
             {  
                 res2 = false;  
                 res2 = false;  
             }  
             if (res2 == true)  
             {  
                 res1 = false;  
                 res3 = false;  
             }  
             if (res3 == true)  
             {  
                 res1 = false;  
                 res2 = false;  
             }  
             //блокировка курсора  
             if (Input.GetButtonUp("esc"))  
             {  
                 if (Screen.lockCursor == true)  
                 {  
                     Screen.lockCursor = false;  
                 }  
                 else if (Screen.lockCursor == false)  
                 {  
                     Screen.lockCursor = true;  
                 }  
             }  
             //выключаем все менюшки если курсор заблокирвоан  
             if (Screen.lockCursor == true)  
             {  
                 pauseMainMenuEnabled = false;  
                 pauseOptionsMenuEnabled = false;  
             }  
             listner1.audio.volume = sliderFVolume;  
             listner2.audio.volume = sliderFVolume;  
      }

0

6

Скрипт на звук шагов

Код:
/** 
 * Script made by OMA [www.oma.netau.net] 
 **/ 

 var concrete : AudioClip[]; 
 var wood : AudioClip[]; 
 var dirt : AudioClip[]; 
 var metal : AudioClip[]; 
 private var step : boolean = true; 
 var audioStepLengthWalk : float = 0.45; 
 var audioStepLengthRun : float = 0.25; 

 function OnControllerColliderHit (hit : ControllerColliderHit) { 
 var controller : CharacterController = GetComponent(CharacterController); 

 if (controller.isGrounded && controller.velocity.magnitude < 8 && controller.velocity.magnitude > 1 && hit.gameObject.tag == "Concrete"  && step == true || controller.isGrounded && controller.velocity.magnitude < 1 && controller.velocity.magnitude > 1 && hit.gameObject.tag == "Untagged" && step == true ) { 
    WalkOnConcrete(); 
   } else if (controller.isGrounded && controller.velocity.magnitude > 3 && hit.gameObject.tag == "Concrete" && step == true || controller.isGrounded && controller.velocity.magnitude > 3 && hit.gameObject.tag == "Untagged" && step == true) { 
    RunOnConcrete(); 
   } else if (controller.isGrounded && controller.velocity.magnitude < 3 && controller.velocity.magnitude > 5 && hit.gameObject.tag == "Wood" && step == true) { 
    WalkOnWood(); 
   } else if (controller.isGrounded && controller.velocity.magnitude > 1 && hit.gameObject.tag == "Wood" && step == true) { 
    RunOnWood(); 
   } else if (controller.isGrounded && controller.velocity.magnitude < 7 && controller.velocity.magnitude > 1 && hit.gameObject.tag == "Dirt" && step == true) { 
    WalkOnDirt(); 
   } else if (controller.isGrounded && controller.velocity.magnitude > 8 && hit.gameObject.tag == "Dirt" && step == true) { 
    RunOnDirt(); 
   } else if (controller.isGrounded && controller.velocity.magnitude < 7 && controller.velocity.magnitude > 1 && hit.gameObject.tag == "Metal" && step == true) { 
    WalkOnMetal(); 
   } else if (controller.isGrounded && controller.velocity.magnitude > 8 && hit.gameObject.tag == "Metal" && step == true) { 
    RunOnMetal();    
   }   
 } 

 /////////////////////////////////// CONCRETE //////////////////////////////////////// 
 function WalkOnConcrete() { 
   step = false; 
   audio.clip = concrete[Random.Range(0, concrete.length)]; 
   audio.volume = 99.9; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthWalk); 
   step = true; 
 } 

 function RunOnConcrete() { 
   step = false; 
   audio.clip = concrete[Random.Range(0, concrete.length)]; 
   audio.volume = 99.9; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthRun); 
   step = true; 
 }   

 ////////////////////////////////// WOOD ///////////////////////////////////////////// 
 function WalkOnWood() { 
   step = false; 
   audio.clip = wood[Random.Range(0, wood.length)]; 
   audio.volume = 79.1; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthWalk); 
   step = true; 
 } 

 function RunOnWood() { 
   step = false; 
   audio.clip = wood[Random.Range(0, wood.length)]; 
   audio.volume = 79.1; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthRun); 
   step = true; 
 } 

 /////////////////////////////////// DIRT ////////////////////////////////////////////// 
 function WalkOnDirt() { 
   step = false; 
   audio.clip = dirt[Random.Range(0, dirt.length)]; 
   audio.volume = 99.1; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthWalk); 
   step = true; 
 } 

 function RunOnDirt() { 
   step = false; 
   audio.clip = dirt[Random.Range(0, dirt.length)]; 
   audio.volume = 99.3; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthRun); 
   step = true; 
 } 

 ////////////////////////////////// METAL /////////////////////////////////////////////// 
 function WalkOnMetal() {   
   step = false; 
   audio.clip = metal[Random.Range(0, metal.length)]; 
   audio.volume = 99.1; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthWalk); 
   step = true; 
 } 

 function RunOnMetal() { 
   step = false; 
   audio.clip = metal[Random.Range(0, metal.length)]; 
   audio.volume = 99.3; 
   audio.Play(); 
   yield WaitForSeconds (audioStepLengthRun); 
   step = true; 
 } 

 @script RequireComponent(AudioSource)

Этот скрипт позволяет создать в вашем проекте звук шагов!Он да же меняет звуки шагов при ходьбе по определенным материалам!Тоесть идете по дереву(звук дерева) идете по металлу(звук металла) но чтобы слышались разные звуки ходьбы вам нужно помечать их тегами!Создайте теги : Metal,Wood,Dirt
этими тегами вы будете помечать поверхности,например: Wood тегом пометьте ту поверхность где дерево ну и т.д
В скрипте так же нужно чут чуть разобраться, например: чтобы менять скорость шагов и громкость.
Думаю особого труда разобраться не заставит.
Откуда брал не помню.Вроде из Fps Kit.

Скрипт "Foot Steps".

0


Вы здесь » Программы+языки » Скрипты » Мультиплеер


Рейтинг форумов | Создать форум бесплатно