Привет всем. Почти доделал проект все время тестил только на ПК, но настал момен собрать билд для телефона и сталклуся с проблемой, что не один из способов управления не подходит мне. Я пробовал собрать свой контролер из тех скприптов, что идут с юнити но нечего не работат даже не могу управлять камерой, мозгов у меня мало поэтому написал вот такой простой скрипт для управления камерой:
Код
using UnityEngine; using UnityStandardAssets.CrossPlatformInput; using System.Collections;
public class Mouse_Look : MonoBehaviour { [SerializeField] float Smoothness=4; [SerializeField] Vector2 Sensitivity = new Vector2(4,4); private Vector2 NewCoord; private Vector2 CurrentCoord; [SerializeField] Vector2 Limit = new Vector2(-70,80); private Vector2 vel;
И еще я сделал кнопки в новом UI, присвоил каждой свои действия но при нажатии по кнопки и по любому месту экрана все равно происходит выстрел. Нажимаю на перезарядку все равно стреляет. Внизу скрипт стрельбы.
Код
using UnityEngine; using UnityEngine.UI; using System.Collections;
public class Shoot : MonoBehaviour {
public GameObject bullet;//переменая для префаба с пулей //public GameObject bulletHole;//след от попадания public GameObject FlashLigth;//вспышка public float delayTime = 0.5f;//темп стрельбы public int ammo = 100;//патронов в бк public int ammo_clip = 5;//патронов в магазине public int pl_Heath = 100;//жизни игрока private bool Player_Death = false;// проверка игрока на сперть по умолчанию лож private bool Fire_ON = true; public Text ammo_text;// всего бк public Text ammo_clip_text;// в магазине public Text Player_Heath;//текст для жизней
private float counter = 0; // Use this for initialization void Start () { ammo_clip_text.text = "" + ammo_clip.ToString (); UpdateHeath(); UpdateAmmo(); }
// Update is called once per frame public void FixedUpdate () { FireGun(); if (ammo_clip >= 0) { FireGun();//функция стрельбы } else { Debug.Log("нет патронов в магазине!!!"); ammo_clip_text.text = "0";//чтобы отоброжался 0 а не -1 } Relouds();
}
public void FireGun() { if (ammo_clip > 0) { if (Input.GetButtonDown("Fire1") && counter > delayTime) { Instantiate(bullet, transform.position, transform.rotation); Instantiate(FlashLigth, transform.position, transform.rotation); GetComponent<AudioSource>().Play();// звук выстрела counter = 0; ammo_clip = ammo_clip - 1;
public void Relouds() { if (Input.GetButtonDown("Reloud")) { if (ammo_clip <= 0)// { ammo_clip = 5;//добовляет 5 патронов ammo -= ammo_clip;// отнимает из обшего числа патронов 5 ammo_clip_text.text = "" + ammo_clip.ToString();//отоброжает значение матронов в магазине снова } } }
void OnTriggerEnter(Collider othen){ if (othen.gameObject.CompareTag ("Bullet_Enemy")) { pl_Heath = pl_Heath - 15; if(pl_Heath <= 0){ Player_Death = true; } } } /* * Работа с жизнями и патронами */ public void AddHeath(int newHeath) { pl_Heath += newHeath; UpdateHeath(); }
ну как бы Input.GetButtonDown("Fire1") и должен срабатывать когда нажата определенная кнопка , не важно где она нажата. Если и при перезарядке стреляет значит условие if (ammo_clip > 0) работает {
beril, у меня уже мозг плавится. скрипты работают нормально, я не пойму почему стреляет только, перезарядка не работает хоть в кнопке указана перезарядка оно всеравно стреляет http://www.falcogames.com/SnowCrushSetup.exe
Она не работает совсем(перезарядка) или работает, но и стрельба идет? Дебаг сделай. ошибка в условиях где то. Возможно строка "Reloud" не назначена в настройках Input или написано не верно => Reload, По умолчанию в настройках Input нажатие ПКМ - это "Fire2"
Так я снова здесь. Я исправил почти все, что писал выше. Осталась только проблема со стрельбой по нажатию на экран, то есть при любом касании происходит выстрел. Так и немогу понять почему на канвасе тригеров не коких нет http://www.falcogames.com/SnowCrushSetup.exe