Ребят,помогите прошу.Как сделать вспышку при стрельбе. - Форум Игроделов
Пт, 03 Май 2024, 08:48 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум Игроделов » UNITY3D » HELP & FAQ » Ребят,помогите прошу.Как сделать вспышку при стрельбе. (Ребят,помогите прошу.Как сделать вспышку при стрельбе.)
Ребят,помогите прошу.Как сделать вспышку при стрельбе.
NitralДата: Сб, 02 Май 2015, 16:25 | Сообщение # 1
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Ребят,помогите прошу.Как сделать вспышку и чтобы она была если батронов в обойме 0.Вот переменная название батрон:curAmmo.Помогите прошу я делаю fps шутер и уже половину сделал и эту ошибку весь день ни могу исправить.
Вот скрипт,подправьте чтобы если батронов 0 то вспышки небыло.

Код
using UnityEngine;
using System.Collections;

public class MuzzleFlahon : MonoBehaviour
{
public Transform MuzzleFlash;
private float MuzzleFlashLifetime = 0.0f;
private int curAmmo;
void Start()
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
if(Input.GetMouseButton(0))
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
}


Разрабатываю игры!

Сообщение отредактировал Nitral - Сб, 02 Май 2015, 17:01
 
СообщениеРебят,помогите прошу.Как сделать вспышку и чтобы она была если батронов в обойме 0.Вот переменная название батрон:curAmmo.Помогите прошу я делаю fps шутер и уже половину сделал и эту ошибку весь день ни могу исправить.
Вот скрипт,подправьте чтобы если батронов 0 то вспышки небыло.

Код
using UnityEngine;
using System.Collections;

public class MuzzleFlahon : MonoBehaviour
{
public Transform MuzzleFlash;
private float MuzzleFlashLifetime = 0.0f;
private int curAmmo;
void Start()
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
void Update ()
{
if(Input.GetMouseButtonDown(0))
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
if(Input.GetMouseButton(0))
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
}

Автор - Nitral
Дата добавления - 02 Май 2015 в 16:25
QNicolyaДата: Сб, 02 Май 2015, 17:20 | Сообщение # 2
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Цитата Nitral ()
Как сделать вспышку и чтобы она была если батронов в обойме 0.

Цитата Nitral ()
подправьте чтобы если батронов 0 то вспышки небыло.

Ну, во-первых - патронов.
Во-вторых, давай ты решишь, чего ты хочешь, и тогда постараюсь помочь. А ещё лучше - напиши эту систему сам, а не скачай ассет, и всё станет понятно.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
Сообщение
Цитата Nitral ()
Как сделать вспышку и чтобы она была если батронов в обойме 0.

Цитата Nitral ()
подправьте чтобы если батронов 0 то вспышки небыло.

Ну, во-первых - патронов.
Во-вторых, давай ты решишь, чего ты хочешь, и тогда постараюсь помочь. А ещё лучше - напиши эту систему сам, а не скачай ассет, и всё станет понятно.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 17:20
NitralДата: Сб, 02 Май 2015, 17:27 | Сообщение # 3
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Я эту систему написал сам.
Мне надо чтобы если патронов больше 0 и нажата кнопка лкм то вспышка появляется,а если патронов = 0 и нажата лкм то вспышки невидно.


Разрабатываю игры!

Сообщение отредактировал Nitral - Сб, 02 Май 2015, 17:28
 
СообщениеЯ эту систему написал сам.
Мне надо чтобы если патронов больше 0 и нажата кнопка лкм то вспышка появляется,а если патронов = 0 и нажата лкм то вспышки невидно.

Автор - Nitral
Дата добавления - 02 Май 2015 в 17:27
QNicolyaДата: Сб, 02 Май 2015, 17:54 | Сообщение # 4
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Код
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;

Если это и есть вспышка, то:
Код
if(Input.GetMouseButtonDown(0) && curAmmo > 0)
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;

Если нажата кнопка и патронов больше ноля - вспышка появляется. Соответственно, если патронов <= 0, то, равно как и когда кнопка не нажата, вспышка не появляется.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
Сообщение
Код
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;

Если это и есть вспышка, то:
Код
if(Input.GetMouseButtonDown(0) && curAmmo > 0)
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;

Если нажата кнопка и патронов больше ноля - вспышка появляется. Соответственно, если патронов <= 0, то, равно как и когда кнопка не нажата, вспышка не появляется.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 17:54
NitralДата: Сб, 02 Май 2015, 18:00 | Сообщение # 5
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
вспышка всёровно появляется если патронов 0

Разрабатываю игры!
 
Сообщениевспышка всёровно появляется если патронов 0

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:00
QNicolyaДата: Сб, 02 Май 2015, 18:02 | Сообщение # 6
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Ну давай подумаем логически.
Если у тебя смотрятся два условия if(Input.GetMouseButton(0)) и if(Input.GetMouseButtonDown(0)), то, во-первых это говнокод, ибо это можно объединить в одну проверку, а, во-вторых, если не понял первого пункта, то добавить проверку на патроны в оба.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеНу давай подумаем логически.
Если у тебя смотрятся два условия if(Input.GetMouseButton(0)) и if(Input.GetMouseButtonDown(0)), то, во-первых это говнокод, ибо это можно объединить в одну проверку, а, во-вторых, если не понял первого пункта, то добавить проверку на патроны в оба.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:02
NitralДата: Сб, 02 Май 2015, 18:04 | Сообщение # 7
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Я добавил на Input.GetMouseButtonDown и вспышки вообще нет.

Разрабатываю игры!
 
СообщениеЯ добавил на Input.GetMouseButtonDown и вспышки вообще нет.

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:04
QNicolyaДата: Сб, 02 Май 2015, 18:06 | Сообщение # 8
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Ну, потому что, подозреваю, ты нигде не изменяешь curAmmo.

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеНу, потому что, подозреваю, ты нигде не изменяешь curAmmo.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:06
NitralДата: Сб, 02 Май 2015, 18:08 | Сообщение # 9
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Я изменил на 30 и вспышка на Input.GetMouseButtonDown появляется но она всё ровно появляется если батроны равны 0

Разрабатываю игры!
 
СообщениеЯ изменил на 30 и вспышка на Input.GetMouseButtonDown появляется но она всё ровно появляется если батроны равны 0

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:08
QNicolyaДата: Сб, 02 Май 2015, 18:15 | Сообщение # 10
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Ты изменяешь curAmmo при изменении патронов?
Сомневаюсь.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеТы изменяешь curAmmo при изменении патронов?
Сомневаюсь.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:15
NitralДата: Сб, 02 Май 2015, 18:19 | Сообщение # 11
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Я в public int curAmmo поменял на 30 и всё

Разрабатываю игры!
 
СообщениеЯ в public int curAmmo поменял на 30 и всё

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:19
QNicolyaДата: Сб, 02 Май 2015, 18:21 | Сообщение # 12
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Ты понимаешь, что юнити не умеет читать твои мысли?
Ты ей должен указать, что при выстреле патроны надо отнимать. И то, что ты их отнимаешь в одном месте, не говорит, что они отнимаются в другом.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеТы понимаешь, что юнити не умеет читать твои мысли?
Ты ей должен указать, что при выстреле патроны надо отнимать. И то, что ты их отнимаешь в одном месте, не говорит, что они отнимаются в другом.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:21
NitralДата: Сб, 02 Май 2015, 18:22 | Сообщение # 13
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
У меня скрипт на стрельбу есть и в нём при нажатие на лкм отнимаются патроны.
А это другой скрипт для создание вспышки.


Разрабатываю игры!
 
СообщениеУ меня скрипт на стрельбу есть и в нём при нажатие на лкм отнимаются патроны.
А это другой скрипт для создание вспышки.

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:22
QNicolyaДата: Сб, 02 Май 2015, 18:25 | Сообщение # 14
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Вот именно.
Патроны отнимаются в том скрипте. А с curAmmo в этом они как-нибудь синхронизированы?
Не думаю.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеВот именно.
Патроны отнимаются в том скрипте. А с curAmmo в этом они как-нибудь синхронизированы?
Не думаю.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:25
NitralДата: Сб, 02 Май 2015, 18:32 | Сообщение # 15
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Ну ок щас сделаю что они и в этом отнимались.И напишу

Добавлено (02 Май 2015, 18:32)
---------------------------------------------
О заработало но коряво почему-то отнимается не 1 патрон а 7-10


Разрабатываю игры!
 
СообщениеНу ок щас сделаю что они и в этом отнимались.И напишу

Добавлено (02 Май 2015, 18:32)
---------------------------------------------
О заработало но коряво почему-то отнимается не 1 патрон а 7-10


Автор - Nitral
Дата добавления - 02 Май 2015 в 18:32
QNicolyaДата: Сб, 02 Май 2015, 18:35 | Сообщение # 16
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Ну показывай как сделал, буду исправлять.

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеНу показывай как сделал, буду исправлять.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:35
NitralДата: Сб, 02 Май 2015, 18:37 | Сообщение # 17
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Код
using UnityEngine;
using System.Collections;

public class MuzzleFlahon : MonoBehaviour
{
public Transform MuzzleFlash;
private float MuzzleFlashLifetime = 0.0f;
public int curAmmo = 30;
void Start()
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
void Update ()
{
if(Input.GetMouseButtonDown(0) && curAmmo > 0)
{
curAmmo = curAmmo - 1;
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
if(curAmmo <= 0)
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
if(Input.GetMouseButton(0) && curAmmo > 0)
{
curAmmo = curAmmo - 1;
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
if(curAmmo <= 0)
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
}


Разрабатываю игры!
 
Сообщение
Код
using UnityEngine;
using System.Collections;

public class MuzzleFlahon : MonoBehaviour
{
public Transform MuzzleFlash;
private float MuzzleFlashLifetime = 0.0f;
public int curAmmo = 30;
void Start()
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
void Update ()
{
if(Input.GetMouseButtonDown(0) && curAmmo > 0)
{
curAmmo = curAmmo - 1;
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
if(curAmmo <= 0)
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
if(Input.GetMouseButton(0) && curAmmo > 0)
{
curAmmo = curAmmo - 1;
MuzzleFlash.GetComponent<ParticleEmitter>().emit = true;
if(curAmmo <= 0)
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
else
{
MuzzleFlash.GetComponent<ParticleEmitter>().emit = false;
}
}
}

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:37
QNicolyaДата: Сб, 02 Май 2015, 18:43 | Сообщение # 18
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Потому что метод Update вызывается один раз в кадр.
Соответственно, при игре в 60 FPS, ты делаешь проверку 60 раз в секунду, и в некоторые моменты оно и срабатывает.
Давай сделаем так: в свой класс выстрела инкапсулируешь такую функцию:
Код
public int Ammo()
{
get{
return _ammo;}
set{
if(value >= 0) _ammo = value;}
}

_ammo заменишь на название переменной с патронами.
Если хоть немного учил программирование, поймешь, что оно делает.
И, если не хочешь объединять класс выброса вспышки с классом выстрела, то в класс вспышки добавляешь GameObject, который будет ссылаться на твоё оружие.
Потом в начале Update делаешь так:
Код
curAmmo = weapon.Ammo();

Где weapon - ссылка на класс выстрела в оружии.


Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеПотому что метод Update вызывается один раз в кадр.
Соответственно, при игре в 60 FPS, ты делаешь проверку 60 раз в секунду, и в некоторые моменты оно и срабатывает.
Давай сделаем так: в свой класс выстрела инкапсулируешь такую функцию:
Код
public int Ammo()
{
get{
return _ammo;}
set{
if(value >= 0) _ammo = value;}
}

_ammo заменишь на название переменной с патронами.
Если хоть немного учил программирование, поймешь, что оно делает.
И, если не хочешь объединять класс выброса вспышки с классом выстрела, то в класс вспышки добавляешь GameObject, который будет ссылаться на твоё оружие.
Потом в начале Update делаешь так:
Код
curAmmo = weapon.Ammo();

Где weapon - ссылка на класс выстрела в оружии.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:43
QNicolyaДата: Сб, 02 Май 2015, 18:46 | Сообщение # 19
God gave Rock'N'Roll to you
 
Сообщений: 3369
Награды: 3
Репутация: 352
Статус: Offline
Но всё же, лучше было бы объединить эти классы.

Если человек вас обманул - он мошенник, если он вас обманул дважды - вы дурак.
 
СообщениеНо всё же, лучше было бы объединить эти классы.

Автор - QNicolya
Дата добавления - 02 Май 2015 в 18:46
NitralДата: Сб, 02 Май 2015, 18:46 | Сообщение # 20
 
Сообщений: 13
Награды: 0
Репутация: 0
Статус: Offline
Ошибка в скобке { после get и в скобке { после set

Разрабатываю игры!

Сообщение отредактировал Nitral - Сб, 02 Май 2015, 18:53
 
СообщениеОшибка в скобке { после get и в скобке { после set

Автор - Nitral
Дата добавления - 02 Май 2015 в 18:46
Форум Игроделов » UNITY3D » HELP & FAQ » Ребят,помогите прошу.Как сделать вспышку при стрельбе. (Ребят,помогите прошу.Как сделать вспышку при стрельбе.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024