У меня появилась проблема с моим скриптом
|
|
KrokoEvil | Дата: Воскресенье, 08 Сентября 2013, 09:35 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| я делал скрипт анимации чтобы при 1 нажатие была анимация прицеливание а при 2 нажатие типо он убирает пест ккбы от бедра но у меня там есть проблема в то что он прицеливается но не убирает обратно или при каждом нажатие происходит 1 анимация в общем вот код Код using UnityEngine; using System.Collections;
public class Aim : MonoBehaviour { public Transform GunAim; public AnimationClip Aim1; public AnimationClip Aim2; private float Timeout; private int rndAnim; //как видите я делал это через Bool но не это не работает (кому не лень можете объяснить как пользоваться переменой Bool или кинте ссылку на описание желательно рус) public bool AimTest; void Update () { if(Input.GetMouseButtonDown(1)) { if(Timeout>0) { Timeout -= Time.deltaTime; } if(Input.GetMouseButtonDown(1)&Timeout<=0&AimTest==false) { Timeout = 0.035f; Vector3 DirectionRay = transform.TransformDirection(Vector3.forward); RaycastHit Hit; rndAnim = Random.Range(0,1); if(rndAnim==0) { GunAim.animation.Play(Aim1.name); AimTest = true; } if(Input.GetMouseButtonDown(1)&Timeout<=0&AimTest==true) { Timeout = 0.035f; //не знаю почему но нижние 2 строки выводит как ошибку а хотя на самом пистолете также на Лкм стрельба и на R перезарядку также стоит и все пашет а тут выводит ошибку Vector3 DirectionRay = transform.TransformDirection(Vector3.forward); RaycastHit Hit; rndAnim = Random.Range(0,1); if(rndAnim==0) { GunAim.animation.Play(Aim2.name); AimTest = false; } } } } } } Зарание спасибо
http://afraidoflight.ucoz.ru/ Сайт моего проекта (Анонс :D)
|
|
| |
NEBR | Дата: Воскресенье, 08 Сентября 2013, 10:15 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| KrokoEvil, Те две строчки выводят ошибку, потому что ты эти переменные уже объявил чуть выше и они у тебя в этом же блоке. Юнька об этом писала в консоли. Ты копируй что там написано, и через гугл переводчик переводи, будет понятно что это за ошибки. Если ты хочешь в том месте кода выпустить еще один луч, его нужно назвать по другому. И ячейку для хранения объекта с которым он столкнется - тоже по другому назвать. А вообще скрипт нелогичен. Не понимаю зачем нужен рандом анимаций, если их две и по логике первая проигрывается при прицеливании, вторая - после. Рандом тут не нужен... Взял бы какой нибудь тутор на эту тему, разобрал бы его, сделал что нибудь похожее )
King Size #Gamiron12
|
|
| |
KrokoEvil | Дата: Воскресенье, 08 Сентября 2013, 11:51 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| эм а как мне хотяб реализовать действие при повторном нажатие ?
http://afraidoflight.ucoz.ru/ Сайт моего проекта (Анонс :D)
|
|
| |
NEBR | Дата: Воскресенье, 08 Сентября 2013, 17:42 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| например через булевую переменную. Скрипт на C#
Код private bool flag = false; void Update() { if (Input.GetMouseButtonDown(0)) { if (flag == false) { // логика при первом нажатии flag = true; } else if (flag == true) { // логика при втором нажатии flag = false; } }
King Size #Gamiron12
Сообщение отредактировал NEBR - Воскресенье, 08 Сентября 2013, 17:43 |
|
| |
Левша | Дата: Воскресенье, 08 Сентября 2013, 20:21 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Код if (flag == false) { // логика при первом нажатии flag = true; } else if (flag == true) { // если до этого дойдет, то и так ясно что оно true - условие лишнее. // логика при втором нажатии flag = false;
X.cor.R (Prologue)
Сообщение отредактировал Левша - Воскресенье, 08 Сентября 2013, 20:22 |
|
| |
lentinant | Дата: Воскресенье, 08 Сентября 2013, 22:11 | Сообщение # 6 |
ленивый программист
Сейчас нет на сайте
| И вообще, були можно записывать как Код if(!flag) { } else { }
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
KrokoEvil | Дата: Понедельник, 09 Сентября 2013, 10:21 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Спасибо вам большое
http://afraidoflight.ucoz.ru/ Сайт моего проекта (Анонс :D)
|
|
| |