Четверг, 28 Марта 2024, 12:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Помогите со скриптом(танк) (Задержка после выстрела)
Помогите со скриптом(танк)
FORFUNДата: Воскресенье, 08 Июля 2012, 00:36 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Вот есть скрипт:
Code
#pragma strict

var speed = 3.0;  

var rotateSpeed = 3.0;  

var bullitPrefab:Transform;
   

function Update ()  

{  

var controller : CharacterController = GetComponent(CharacterController);  

transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);  

var forward = transform.TransformDirection(Vector3.forward);  

var curSpeed = speed * Input.GetAxis ("Vertical");  

controller.SimpleMove(forward * curSpeed);  

if(Input.GetButtonDown("Fire1"))  

{  

var bullit = Instantiate(bullitPrefab,  

GameObject.Find("spawnPoint").transform.position,  

Quaternion.identity);  

bullit.rigidbody.AddForce(transform.forward * 1300);
audio.Play();
Destroy(GameObject.FindGameObjectWithTag("FB"), 1);
}
}  

@script RequireComponent(CharacterController);

Помогите реализовать задержку после высрела.


- создавай то, что нравится тебе.
[MIND++] - будь выше и умнее.
IrondustДата: Воскресенье, 08 Июля 2012, 05:43 | Сообщение # 2
участник
Сейчас нет на сайте
кулдаун я обычно делаю так.
Делаю переменную lastAttack, равную нулю
делаю переменную cooldown, равную например двум

И затем после каждого выстрела назначаю lastAttack параметр времени, а перед выстрелом сравниваю с ним же.

[code]
var lastAttack:float;
var cooldown:float = 2.0;
function Update () {
if (Time.time > lastAttack + cooldown) {
//выстрел
lastAttack = Time.time;
}
}

И кстати никогда не используй GameObjecct.Find в апдейте, он здорово убивает производительность. Лучше один раз запомни через Start ()
FORFUNДата: Воскресенье, 08 Июля 2012, 20:12 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Irondust, Спасибо огромное только я переделал немного свой скрипт вот так:
Code
#pragma strict

var speed = 3.0;  
var rotateSpeed = 3.0;  
var bullitPrefab:Transform;
var lastAttack:float;  
var cooldown:float = 2.0;  

function Start () {
}

function Update ()  

{  

var controller : CharacterController = GetComponent(CharacterController);  

transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);  

var forward = transform.TransformDirection(Vector3.forward);  

var curSpeed = speed * Input.GetAxis ("Vertical");  

controller.SimpleMove(forward * curSpeed);

if(Input.GetButtonDown("Fire1"))  

{  
if (Time.time > lastAttack + cooldown) {  
var bullit = Instantiate(bullitPrefab,  

GameObject.Find("spawnPoint").transform.position,  

Quaternion.identity);  
bullit.rigidbody.AddForce(transform.forward * 1300);
audio.Play();
Destroy(GameObject.FindGameObjectWithTag("FB"), 1);
lastAttack = Time.time;  
}
}
}  

@script RequireComponent(CharacterController);


А ты еще забыл закрыть тег CODE. С меня +1.


- создавай то, что нравится тебе.
[MIND++] - будь выше и умнее.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Помогите со скриптом(танк) (Задержка после выстрела)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг