Выглядит очень симпатично, сейчас установлю себе на смартфон
Добавлено (06.02.2014, 18:42) --------------------------------------------- allods, скинь мне ссылку на apk файл, с google play не могу скачать, дома WI-FI роутера нет, интернета на мобиле даётся только 20 мб в день. Скачать в смартфоне к сожалению не в силах.
Как сделать когда я нажал кнопкой мыши на объект "Button_Pause" менялась текстура на текстуру с именем"Play" и при обратном нажатии на объект менялась обратно. Вот мой код, как его изменить?
Код
using UnityEngine; using System.Collections;
public class Pause : MonoBehaviour { public Texture texture; void Update () { if (Input.GetMouseButtonDown (0)) { //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то RaycastHit hit; //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому) Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); //и сам луч, который будет направлен от курсора мыши вглубь экрана if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { //если созданный луч соприкоснулся с объектом if (hit.collider.name == "Button_Pause") { //и если этот объект имеет имя "name", то Time.timeScale = Time.timeScale > 0f ? 0f : 1f; Debug.Log ("Pause_" + (Time.timeScale > 0f ? "OFF" : "ON")); renderer.material.mainTexture = texture; } } } } }
Добавлено (03.02.2014, 15:53) --------------------------------------------- Только с подробными пожалуйста комментариями что бы я воспринял информацию хорошо
Привет, помоги разобраться, вот есть скрипт управление персом(вид с боку) Как переделать это на управление пальцем(для mobile устройств) Ну Jump я думаю переделать могу, а Вот не могу понять как переделать управление влево и вправо. Вот скрипт управление:
Код
using UnityEngine; using System.Collections;
[RequireComponent(typeof(PlayerPhysics))] public class PlayerController : MonoBehaviour {
// Player Handling public float gravity = 20; public float speed = 8; public float acceleration = 30; public float jumpHeight = 12;
// Increase n towards target by speed private float IncrementTowards(float n, float target, float a) { if (n == target) { return n; } else { float dir = Mathf.Sign(target - n); // must n be increased or decreased to get closer to target n += a * Time.deltaTime * dir; return (dir == Mathf.Sign(target-n))? n: target; // if n has now passed target then return target, otherwise return n } } }
Вот таким образом я думаю переделать на такое управление:
Код
using UnityEngine; using System.Collections;
public class Example : MonoBehaviour {
// Update is called once per frame void Update () { if(Input.GetMouseButtonDown(0)) //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то { RaycastHit hit; //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому) Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //и сам луч, который будет направлен от курсора мыши вглубь экрана if(Physics.Raycast(ray, out hit, Mathf.Infinity)) //если созданный луч соприкоснулся с объектом { if(hit.collider.name == "Button") //и если этот объект имеет имя "button", то { Debug.Log("Pressed left click.");//выполняем что-то }
Работает только на 1 уровне дальше он перестаёт работать? Может кто знает есть замена данному скрипту типа Application.nextLevel?
Может просто у тебя в "Scanes In Build" не добавлены остальные сцены?
Кто знает, есть скрипт из 2D Mario, вот код
Код
/// <summary> /// PlayerControls /// Vovk Alexey (www.nikanorich.org) /// October 26, 2011 /// ОПИСАНИЕ: Представить 2D-персонажа с основными движениями /// Разработать простую схему управления в стиле Super Mario Bros. /// Для игры можно использовать джойстик или клавиатуру /// СХЕМА УПРАВЛЕНИЯ: /// кнопка влево - движение влево /// кнопка вправо - движение вправо /// кнопка вниз - приседание /// пробел - прыжок /// ctrl+пробел - прыжок в беге (сильный прыжок) /// вниз+пробел - прыжок в присяде /// вниз на трубе - активация телепорта /// </summary> using UnityEngine; using System.Collections;
public class PlayerControls : MonoBehaviour {
public float walkSpeed = 1.5F; // скорость ходьбы public float runSpeed = 2.0F; // скорость бега public float fallSpeed = 2.0F; // скорость падения public float walkJump = 6.2F; // прыжок при ходьбе public float runJump = 9.0F; // прыжок при беге public float crouchJump = 10.0F; // прыжок в присяде public float gravity = 20.0F; // сила гравитации //public float startPos = 0.0F; // расположение персонажа при старте
public int moveDirection = 1; // направление персонажа
public Transform paticleJump; // частицы при ударе о землю (приземление)
public AudioClip soundJump; // звук ст. прыжка public AudioClip soundCrouchJump; // звук прыжки из приседа
public Vector3 velocity = Vector3.zero; // скорость персонажа в направлениях private bool jumpEnable = false; // ключ стандартного прыжка private bool runJumpEnable = false; // ключ прыжка на бегу private bool crouchJumpEnable = false; // ключ прыжка в присяди private float afterHitForceDown = 1.0F; // падать если ударился головой о что-то сверху
if (Input.GetButtonDown ("Jump") && Input.GetButton ("Fire1") && velocity.x != 0) { velocity.y = runJump; // установка скорости прыжка Instantiate (paticleJump, paticlePlacement, transform.rotation); PlaySound (soundJump, 0); runJumpEnable = true; // ключ прыжка сходу } if (Input.GetButtonDown ("Jump") && velocity.x == 0 && Input.GetAxis ("Vertical") < 0) { velocity.y = crouchJump; // установка скорости прыжка Instantiate (paticleJump, paticlePlacement, transform.rotation); PlaySound (soundCrouchJump, 0); crouchJumpEnable = true; // ключ прижка вприсяди } } if ( !controller.isGrounded) { // контроллер в воздухе velocity.x = Input.GetAxis ( "Horizontal" ); // устаносвка горизонт. скорости
if (Input.GetButtonUp ("Jump") ) { // контроль высоты прижка velocity.y = velocity.y - fallSpeed; // по отпусканию клавиши
} if (moveDirection == 0) { // влево if (jumpEnable) { // стандартный прыжок velocity.x *= walkSpeed; // его скорость animation.aniSprite (16, 16, 11, 3, 4, 12); } if (runJumpEnable) { // скоростной прыжок velocity.x *= runSpeed; // его скорость animation.aniSprite (16, 16, 11, 3, 4, 12); } if (crouchJumpEnable) { // прыжок вприсяде velocity.x *= walkSpeed; // его скорость animation.aniSprite (16, 16, 12, 11, 4, 12); } } if (moveDirection == 1) { // вправо if (jumpEnable) { // стандартный прыжок velocity.x *= walkSpeed; // его скорость animation.aniSprite (16, 16, 11, 2, 4, 12); // анимация прыжка } if (runJumpEnable) { // скоростной прыжок velocity.x *= runSpeed; // его скорость animation.aniSprite (16, 16, 11, 2, 4, 12); // анимация прыжка } if (crouchJumpEnable) { // прыжок вприсяде velocity.x *= walkSpeed; // его скорость animation.aniSprite (16, 16, 12, 10, 4, 12); // анимация прыжка вприсяди } } } if (velocity.x < 0) { // получаем последнее направление движения moveDirection = 0; // устанавливаем значение = 0 (направление вправо) } if (velocity.x > 0) { // получаем последнее направление движения moveDirection = 1; // устанавливаем значение = 1 (направление влево) }
if (controller.collisionFlags == CollisionFlags.Above) { velocity.y = 0; // остановить подьем после удара головой о что-то всерху velocity.y -= afterHitForceDown; // начать снижение }
Assets/Standard Assets (Mobile)/Scripts/PlayerControls.cs(47,17): error CS0246: The type or namespace name `AniSprite' could not be found. Are you missing a using directive or an assembly reference?
public class Click : MonoBehaviour { void Update() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hit : RaycastHit; if (Physics.Raycast (ray, hit, 100.0)) { if (Input.GetMouseButton(0)) { if(hit.collider.tag=="button") { Debug.Log("Pressed left click."); } } } } }
Ну вот код ошибки Assets/Scripts/Click.cs(7,25): error CS1525: Unexpected symbol `:', expecting `)', `,', `;', `[', or `='
Добавлено (27.01.2014, 22:05) --------------------------------------------- Всё, сам уже нашел инфу, вот если кому нужно будет
Код
using UnityEngine; using System.Collections;
public class Example : MonoBehaviour {
// Update is called once per frame void Update () { if(Input.GetMouseButton(0)) //если нажата левая кнопка мыши (тапнули пальцем на андроиде/айосе), то { RaycastHit hit; //создаем новую точку соприкосновения луча (назовем это так, хотя возможно правильно это обозвать подругому) Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //и сам луч, который будет направлен от курсора мыши вглубь экрана if(Physics.Raycast(ray, out hit, Mathf.Infinity)) //если созданный луч соприкоснулся с объектом { if(hit.collider.name == "Button") //и если этот объект имеет имя "button", то { Debug.Log("Pressed left click.");//выполняем что-то }
public class Click : MonoBehaviour { void Update() { var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hitT : RaycastHit; if (Physics.Raycast (ray, hitT, 100.0)) { if (Input.GetMouseButton(0)) { if(hitT.collider.tag=="button") { Debug.Log("Pressed left click."); } } } } }
Пускать рейкаст и проверять коллизию и название или таг обжекта Код var ray = Camera.main.ScreenPointToRay (Input.mousePosition); var hitT : RaycastHit; if (Physics.Raycast (ray, hitT, 100.0)) { if (Input.GetMouseButton(0)) { if(hitT.collider.tag=="button") {
Можно использовать GetMouseButton в заместо Touch оно работает и на андроиде