forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Помощь в объединении скрипта (http://forum.boolean.name/showthread.php?t=18220)

sniper16 28.05.2013 02:46

Помощь в объединении скрипта
 
Может кто помочь 2 скрипта в один сделать. То есть у меня есть скрипт оружия. И есть отдельный скрипт чтобы оставались дыры от пуль. И со скриптом который отвечает за дыры от пуль косяк. То есть он реагирует на каждое нажатие нажатие левой кнопки. Даже когда пуль нету. Он всё равно оставляет дыры от пуль. Как можно привязать оба скрипта чтобы когда стреляешь оставались тока пули от пистолета. И когда пуль нету ничего не оставалось.
Скрипт Оружия :
PHP код:

using UnityEngine;

using System.Collections;

 

public class 
Weapon MonoBehaviour {

                
//камера

                
public Transform _camTransform;

 

                
//анимации

                
public AnimationClip animationIdle;

                public 
AnimationClip animationRun;

                public 
AnimationClip animationFire;

                public 
AnimationClip animationReload;

 

                
//звуки

                
public AudioClip soundReload;

                public 
AudioClip soundFire;

 

 

                public 
float ReloadTime 3.5f;

                public 
float FireTime 0.5f;

                public 
float FireRate 0.5f;

                public 
float Range 1000;

                public 
int Damage 50;

                public 
int BulletsInClip 8;

                public 
int Clips 3;

 

 

                public 
ParticleEmitter muzzleFlash;

 

 

                private 
int BulletsLeft 0;

                private 
float NextFireTime 0.0f;

                private 
bool Reloading false;

                private 
bool isFire false;

                private 
float muzzleFlashLifeTime 0.0f;

 

 

                
void Start () {

                               
BulletsLeft BulletsInClip;

                }

 

 

                
void Update () {

 

                               if (
muzzleFlashLifeTime 0) {

                                               
muzzleFlashLifeTime--;

                                               
muzzleFlash.emit true;

 

                               } else {

                                               
muzzleFlash.emit false;

                                                                              }

                               if (
BulletsLeft == && !Reloading && NextFireTime Time.time) {

                                               
Reload ();

                               }

 

                               if (
Input.GetButtonDown("Fire1")) {

                                               
Fire();

                               } else if (
Input.GetKeyDown(KeyCode.R) ) {

                                               
Reload ();

 

                               } else if( !
Reloading && !isFire ) {

                                               
Idle ();

                               }

 

                }

 

                private 
void Reload() {

                               if (
Clips == 0) return;

                               
Reloading true;

                               
Invoke ("ReloadingOf"ReloadTime);

                               
animation.StopanimationRun.name );

                               
animation.CrossFadeanimationReload.name );

                               
audio.PlayOneShotsoundReload );

 

                }

 

                private 
void Idle() {

                               if(
Input.GetKeyKeyCode.W)) {

                                               
animation.CrossFadeanimationRun.name );

                               } else {

                                               
animation.CrossFadeanimationIdle.name );

                               }

 

                }

 

                private 
void Run() {

                               
animation.CrossFadeanimationRun.name );

                }

 

                private 
void ReloadingOf() {

                               
BulletsLeft BulletsInClip;

                               
Clips--;

                               
Reloading false;

                }

 

                private 
void FireOf() {

                               
isFire false;
                }

 

                private 
void Fire() {

                               
isFire true;

                               
Invoke ("FireOf"FireTime);

                               if (
BulletsLeft == 0)

                                               return;

 

 

                               if (
Time.time FireRate NextFireTime)

                                               
NextFireTime Time.time Time.deltaTime;

 

                               if (
NextFireTime Time.time && BulletsLeft != && !Reloading) {

 

 

                                               
animation.Rewind animationFire.name );

                                               
animation.CrossFadeanimationFire.name );

                                               
audio.PlayOneShotsoundFire );

 

                                               
Effects();

 

                                               
NextFireTime += FireRate;

                                               
BulletsLeft--;

 

                                               
Vector3 _direction _camTransform.TransformDirection(Vector3.forward);

            
/*RaycastHit _hit;

            if (Physics.Raycast(_camTransform.position, _direction, out _hit, Range))

            {

                if (_hit.transform.tag == "Enemy")

                {

                    BotHealth eh = _hit.transform.GetComponent<BotHealth>();

                    eh.adjustHealth(-Damage, transform);

                }

            }*/

 

                               
}

 

                }

 

                private 
void Effects () {

                               
muzzleFlashLifeTime 2.0f;

 

                }

 

                
void OnGUI() {

                               
int lHeight 25;

 

                               
int lWidth 200;

 

                               
Rect _pos = new Rect(Screen.width lWidthScreen.height 50lWidthlHeight);

                               
Rect _pos2 = new Rect(Screen.width lWidthScreen.height 30lWidthlHeight);

                               
string lb "Bullets: " BulletsLeft;

                               
GUI.Label(_poslb);

                               
string lb2 "Clips: " Clips;

                               
GUI.Label(_pos2lb2);

 

 

                }

 




sniper16 28.05.2013 02:48

Ответ: Помощь в объединении скрипта
 
Скрипт отвечающий за дыры от пуль :
PHP код:

using UnityEngine;
using System.Collections;

public class 
DecalTest MonoBehaviour {

    public 
LayerMask hitLayer 1;
    private 
float tm;
    
    
void Update() {
        
        if (
Input.GetButton("Fire1")){
            if (
Time.time >= tm) {
                
tm Time.time 0.05f;
                
RaycastHit rayhits;
                if (
Physics.Raycast(transform.positiontransform.TransformDirection(Vector3.forward), out rayhits 10hitLayer))
//                        Debug.Log("fire!");
                
StaticFunction.GenerateDecal(rayhits);
            }
        }
    }



pax 28.05.2013 09:14

Ответ: Помощь в объединении скрипта
 
Ну пренеси код второго скрипта в условие первого там где
PHP код:

if (NextFireTime Time.time && BulletsLeft != && !Reloading) {
// сюда 

Соответственно переменные
PHP код:

public class Weapon MonoBehaviour {

// где-то здесь
    
public LayerMask hitLayer 1;
    private 
float tm


sniper16 29.05.2013 02:38

Ответ: Помощь в объединении скрипта
 
Цитата:

Сообщение от pax (Сообщение 260195)
Ну пренеси код второго скрипта в условие первого там где
PHP код:

if (NextFireTime Time.time && BulletsLeft != && !Reloading) {
// сюда 

Соответственно переменные
PHP код:

public class Weapon MonoBehaviour {

// где-то здесь
    
public LayerMask hitLayer 1;
    private 
float tm


Не работает почему то.

pax 29.05.2013 09:52

Ответ: Помощь в объединении скрипта
 
Покажи результат переноса - готовый скрипт


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

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