Задать вопрос
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    MrDywar Pichugin: или даже так.

    using UnityEngine;
    using System.Collections;
    using UnityStandardAssets.CrossPlatformInput;

    public class CharacterController2 : MonoBehaviour {

    public float maxSpeed = 10f;
    public bool facingRight = true;
    public float move;
    public int InputAxis;
    bool BoolSpeed;

    Animator anim;
    // Use this for initialization
    void Start () {
    anim = GetComponent ();

    }

    // Update is called once per frame
    void FixedUpdate () {

    if (BoolSpeed) {
    move = InputAxis;
    this.GetComponent ().velocity = new Vector2 (move * maxSpeed, GetComponent ().velocity.y);
    }

    if (move > 0 && !facingRight)
    Flip ();
    else if (move < 0 && facingRight)
    Flip ();

    }

    public void Walk(int InputAxis){

    anim.SetBool ("BoolSpeed", true);
    //Включает анимацию ходьбы
    BoolSpeed = true;

    }

    public void Idle(int InputAxis){

    anim.SetBool ("BoolSpeed", false);
    //Включает анимацию пакоя
    BoolSpeed = false;
    }

    void Flip() {
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
    }
    }
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    Если я вас правильно понял, то у меня ошибка( Я понимаю что скорее всего вас задолбал) Я написал BoolSpeed в void Walk и idle (true и false соответственно)
    и указал в fixedupdate путь на move.

    using UnityEngine;
    using System.Collections;
    using UnityStandardAssets.CrossPlatformInput;
    
    public class CharacterController2 : MonoBehaviour {
    	
    	public float maxSpeed = 10f;
    	public bool facingRight = true;
    	public float move;
    	public int InputAxis;
    	bool BoolSpeed;
    
    	Animator anim;
    	// Use this for initialization
    	void Start () {
    		anim = GetComponent<Animator> ();
    
    	}
    	
    	// Update is called once per frame
    	void FixedUpdate () {
    
    		if (BoolSpeed) {
    
    			Move();
    
    		}
    
    		if (move > 0 && !facingRight) 
    			Flip ();
    		else if (move < 0 && facingRight) 
    			Flip ();
    
    	}
    
    	public void Move(int InputAxis){
    
    		move = InputAxis;
    		this.GetComponent<Rigidbody2D>().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
    
    	}
    
        public void Walk(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", true);   
    		//Включает анимацию ходьбы
    		BoolSpeed = true; 
    		}
    
    	public void Idle(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", false);
    		//Включает анимацию пакоя
    		BoolSpeed = false;
    	}
    
    	void Flip() {
    		facingRight = !facingRight;
    		Vector3 theScale = transform.localScale;
    		theScale.x *= -1;
    		transform.localScale = theScale;
    	}
    }
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    MrDywar Pichugin: А можно ли сделать так? Но при этом пишет error CS1501: No overload for method `Move' takes `0' arguments. Просто в первом случае мне просто не к какой переменной я не могу прицепить к кнопке (типо public void Move(int InputAxis)) как во втором случае.

    using UnityEngine;
    using System.Collections;
    using UnityStandardAssets.CrossPlatformInput;
    
    public class CharacterController2 : MonoBehaviour {
    	
    	public float maxSpeed = 10f;
    	public bool facingRight = true;
    	public float move;
    	public int InputAxis;
    	bool BoolSpeed;
    
    	Animator anim;
    	// Use this for initialization
    	void Start () {
    		anim = GetComponent<Animator> ();
    
    	}
    	
    	// Update is called once per frame
    	void FixedUpdate () {
    
    		if (BoolSpeed){
    
    			Move();
    			 
    		if (move > 0 && !facingRight) 
    			Flip ();
    		else if (move < 0 && facingRight) 
    			Flip ();
    		}
    	}
    
    	public void Move(int InputAxis){
    
    		move = InputAxis;
    		this.GetComponent<Rigidbody2D>().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
    
    	}
    
        public void Walk(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", true);
    
    		}
    
    	public void Idle(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", false);
    
    	}
    
    	void Flip() {
    		facingRight = !facingRight;
    		Vector3 theScale = transform.localScale;
    		theScale.x *= -1;
    		transform.localScale = theScale;
    	}
    }
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    MrDywar Pichugin:
    Написал код. Но он как не ходил, так и не ходит( + перестал поворачиваться. вот код. boolspeed заключал и в скобки, но тоже самое.

    using UnityEngine;
    using System.Collections;
    using UnityStandardAssets.CrossPlatformInput;
    
    public class CharacterController2 : MonoBehaviour {
    	
    	public float maxSpeed = 10f;
    	public bool facingRight = true;
    	public float move;
    	public int InputAxis;
    	bool BoolSpeed;
    
    	Animator anim;
    	// Use this for initialization
    	void Start () {
    		anim = GetComponent<Animator> ();
    
    	}
    	
    	// Update is called once per frame
    	void FixedUpdate () {
    
    		if (BoolSpeed){
    
    		   move = InputAxis;
    		   this.GetComponent<Rigidbody2D>().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
    
    
    		if (move > 0 && !facingRight) 
    			Flip ();
    		else if (move < 0 && facingRight) 
    			Flip ();
    		}
    	}
    
        public void Walk(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", true);
    
    		}
    
    	public void Idle(int InputAxis){
    
    		anim.SetBool ("BoolSpeed", false);
    
    	}
    
    	void Flip() {
    		facingRight = !facingRight;
    		Vector3 theScale = transform.localScale;
    		theScale.x *= -1;
    		transform.localScale = theScale;
    	}
    }
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    MrDywar Pichugin: cпасибо вам! Всё получилось!!! При зажатии кнопки (она же gui imagine) анимация проигрывается и переключается только тогда когда я утпускаю палец. Но двигается он все равно только при нажатии, а потом останавливается, даже когда я держу( Помогите, это последнее препядствие перед полным управлением персонажем!)
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    MrDywar Pichugin: То есть прописать вот это

    public void Walk(int InputAxis)
    {
    BoolSpeed = true;
    }

    public void Idle(int InputAxis)
    {
    BoolSpeed = false;
    }

    и вставить под event trigger (pointer down и pointer exit) что бы при нажатии "true" и при отпускании "false"?
    Если так, ещё вопрос, куда мне закинуть вот эти строки?

    move = InputAxis;

    GetComponent().velocity = new Vector2 (move * maxSpeed, GetComponent().velocity.y);

    В принципе мне всё понятно, но если можете, объясните пожалуйста.
  • Ошибка в коде Character Controller Unity 2D, что делать?

    @WalloutDay Автор вопроса
    Извините, то есть мне придётся дописать код в FixedUpdate?
    using UnityEngine;
    using System.Collections;
    using UnityStandardAssets.CrossPlatformInput;
    
    public class CharacterController2 : MonoBehaviour {
    	
    	public float maxSpeed = 10f;
    	public bool facingRight = true;
    	public float move;
    	public int InputAxis;
    
    	Animator anim;
    	// Use this for initialization
    	void Start () {
    		anim = GetComponent<Animator> ();
    
    	}
    	
    	// Update is called once per frame
    	void FixedUpdate () {
    
    
    		move = InputAxis;
    		
    		GetComponent<Rigidbody2D>().velocity = new Vector2 (move * maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
    		
    		if (move > 0 && !facingRight) 
    			Flip ();
    		else if (move < 0 && facingRight)
    			Flip ();
    	}
    
    	void Flip() {
    		facingRight = !facingRight;
    		Vector3 theScale = transform.localScale;
    		theScale.x *= -1;
    		transform.localScale = theScale;
    	}
    }


    а именно указать что, если персонаж начинает двигаться, то bool=true, и как только он остановился bool=false. В аниматоре я уже выставил значения bool и в ручном режиме всё работает. И ещё прописать код для клавиши или можно использовать getbutton?
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: нашёл проблему, но пока что не знаю как решить. "speed" в окне анимации не меняется, хоть персонаж и двигается. а анимация должна поменяться сразу после того как "speed">0
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: я как бы понял, вроде) понял что в Event Trigger (Script) в Pointer Down поставил значение -1 и на другую кнопку 1, засунул скрипт и выбрал переменную move (int). Дошло то, что если в состоянии 0 проигрывается move int и если поставить на другое состояние на -1 и 1 другую переменную, и прописать в скрипте ещё одну переменную, то по сути при нажатии на кнопку, он должен начать ходить. В правильном направлении я двигаюсь?)
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: вы тут? помогите пожалуйста. я нуждаюсь в вашей помощи!
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: если чесно, не понял, т.к. всето у меня было раньше сделано (я имею ввиду про анимацию в окне аниматор). Про какое событие вы имеете ввиду? Событие нажатие на кнопку в скрипте или в инспекторе?
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: тригер повесить именно на персонажа или в скрипте? Я не сильно понимаю.
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: снова я) переписал скрипт. персонаж ходит по кнопкам. Смотрел по второй ссылке. Но вот проблема=( Не работает анимация.

    anim.SetFloat ("Speed", Mathf.Abs (move));

    методом удаления различных команд, понял, что именно эта строка отвечает за изменение анимации. Вставил её в скрипт =>

    using UnityEngine;
    using System.Collections;

    public class CharacterController1 : MonoBehaviour {
    public Rigidbody2D rb2d;
    public float speed;
    public int move;
    public bool groundCheck;
    public bool facingRight = true;

    Animator anim;

    void Start ()
    {
    anim = GetComponent ();
    rb2d = GetComponent();
    }


    void FixedUpdate ()
    {
    if ((move < 0) && (facingRight))
    {
    Flip();
    }

    if ((move > 0) && (!facingRight))
    {
    Flip();
    }
    groundCheck = true;
    }

    public void Move(int InputAxis)
    {
    float move = Input.GetAxis ("Horizontal");
    anim.SetFloat ("Speed", Mathf.Abs (move)); <=========
    move = InputAxis;
    GetComponent().velocity = new Vector2 (move * speed, GetComponent().velocity.y);

    if ((move < 0) && (facingRight))
    {
    Flip();
    }

    if ((move > 0) && (!facingRight))
    {
    Flip();
    }
    }



    void Flip()
    {
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
    }


    }

    но попрежнему что со строкой, что без строки, анимация не проигрывается!(

    пожалуйста помогите найти ошибку... может что-то неправильно написал?
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев:у меня в скрипте был. Но вот то что я почти все скопировал, вы правы. Я попытался немного разобрать, что да как. Дошло, что мы определяем начальную и конечную координаты и сравниваем их, от этого и решаем куда идти(вправо или в лево). Но вот в какую из строчек моего уже существующего скрипта засунуть в эти строки, я толком не понял. Могли бы вы дать пару ссылок где мне можно узнать что и после чего ставится. Работал с сишкои и Паскалем) поэтому вроде логический склад ума имею, но вот используемые команды только догадываюсь что к чему. Если можете, сразу киньте и ссылку на кнопки. Возможно будет легче с ними. Если такие ссылки конечно же имеются) спасибо)!
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Зелим Бельтоев: попробовал как сказано в видео. выбивает ошибку. еще пугает что его скрипт почти не совпадает с моим. вот что у меня получилось--- using UnityEngine;
    using System.Collections;

    public class CharacterController1 : MonoBehaviour {

    public float maxSpeed = 10f;
    bool facingRight = true;

    private Vector2 touchOrigin = -Vector2.one;

    Animator anim;
    // Use this for initialization
    void Start () {
    anim = GetComponent ();
    }

    // Update is called once per frame
    void FixedUpdate () {

    #if UNITY_STANDALONE || UNITY_WEBPLAYER

    float move = Input.GetAxis ("Horizontal");

    #else
    if (Input.touchCount > 0)
    {
    Touch myTouch = Input.touches[0];

    if (myTouch.phase == TouchPhase.Began)
    {
    touchOrigin = myTouch.position;
    }

    else if (myTouch.phase == TouchPhase.Ended && touchOrigin.x >=0)
    {
    Vector2 touchEnd = myTouch.position;
    float x = touchEnd.x - touchOrigin.x;
    touchOrigin.x = -1;
    if (Mathf.Abs(x) > Mathf.Abs(y))
    harizontal = x > 0 ? 1 : -1;
    else vertical = y > 0 ? 1 : -1;
    }
    }

    #endif

    anim.SetFloat ("Speed", Mathf.Abs (move));

    GetComponent().velocity = new Vector2 (move * maxSpeed, GetComponent().velocity.y);

    if (move > 0 && !facingRight)
    Flip ();
    else if (move < 0 && facingRight)
    Flip ();
    }

    void Flip() {
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
    }
    }
    помогите пожалуйста найти ошибку.
  • Как перевести управление 2d платформера с ПК на android, unity 3d?

    @WalloutDay Автор вопроса
    Тоесть мне прийдется переписать код? Вот этот--- public float maxSpeed = 10f;
    bool facingRight = true;
    Animator anim;
    // Use this for initialization
    void Start () {
    anim = GetComponent ();
    }

    // Update is called once per frame
    void FixedUpdate () {
    float move = Input.GetAxis ("Horizontal");
    anim.SetFloat ("Speed", Mathf.Abs (move));
    GetComponent().velocity = new Vector2 (move * maxSpeed, GetComponent().velocity.y);
    if (move > 0 && !facingRight)
    Flip ();
    else if (move < 0 && facingRight)
    Flip ();
    }
    void Flip() {
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
    }
    }
    Я извинюсь за то что сейчас не могу посмотреть видео, я не прошу изменить код, просто скажите в видео так же приписывается анимация и используются кнопки gui?