private bool Func() { // тело функции return true;
if (Func()) { //Функция сработала smile }
Теперь моя функция работает даже когда я ее не вызываю
Добавлено (28.01.2014, 15:54) --------------------------------------------- Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю
Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю
Смешной вопрос. Вы что многопоточное приложение делаете? В одном потоке (возможно) работает Ваша функция, в другом вы проверяете - работает ли она. Ну наверняка же не так! Ну а если не многопоточное приложение, то в тот момент, когда Вы проверяете работает ли функция - она 100000% НЕ работает! Проверяете же Вы не внутри нее! Другой вопрос - проверить не запускалась ли когда-нибудь вообще в прошлом эта функция. Тогда:
Дело в том что мне нужно знать когда моя функция не работает, тоесть когда я ее не вызываю
Это как, если вы её не прописали ни где она не работает, а если куда то вписали то работает. И вам нужно узнать сработало условие или нет, в котором эта функция? =>The darkness of distant lands [3D]<=
Работает только на 1 уровне дальше он перестаёт работать? Может кто знает есть замена данному скрипту типа Application.nextLevel? Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Работает только на 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?
Laush, добавлены. Я хотел сказать что с 1 на 2 уровнень он переходит, а со 2 на 3 не переходит. Хотя всё должно работать. Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
классные туторы, я тоже их проходил ))) Скрипт AniSprite должен висеть на том же объекте, что и этот скрипт. Кстати, лучше GetComponent в Start() делай... King Size #Gamiron12
Вопрос остаётся открытым. Я могу перейти только с меню на 1 уровень и на сцену кредитс и с 1 уровня на 2 уровень дальше не могу(все уровни стоят в билд сетингсе). Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Вторник, 28 Января 2014, 21:34
last2424, А не проще вписывать название сцены ? Хотя...Это займет больше места но все же.
Добавлено (29.01.2014, 10:09) --------------------------------------------- Люди такой вопрос я сделал модель в Blender так вот кто может ее протикстурировать ? просто я с этим не очень дружу. Если что то не обижу + в репу
Как обратится к переменной из одного скрипта в другом скрипте, но так что бы значение переменной менялось только на одном объекте. Static, не помог так как глобально меняет значение.
Пример: на сцене есть 3 бота, у них у всех один и тот же скрипт, но нужно что бы значение менялось только у того объекта с которым происходит взаимодействие. SendMessage мне не помог.
Привет, помоги разобраться, вот есть скрипт управление персом(вид с боку) Как переделать это на управление пальцем(для 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.");//выполняем что-то }
Есть 2 вопроса. Как мне убрать вращение в RigidBody? Как мне сделать так что бы физический объект не двигался при столкновений с boxcollider? Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Четверг, 30 Января 2014, 20:12