Ребят,помогите прошу.Как сделать вспышку при стрельбе.
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