Мой персонаж оживляет, но все еще не движется - PullRequest
0 голосов
/ 03 февраля 2019

Я только начинаю с единства, а также создаю игру для школьного проекта.Мой двумерный игровой персонаж может выполнять анимацию ходьбы, когда я нажимаю клавиши «a» и «d», и спрайт переворачивается, но он остается в том же положении.Ниже мой скрипт PlayerController

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{

    private float speed = 3f;
    private Animator anim;
    private SpriteRenderer sr;

    // Start is called before the first frame update
    void Awake()
    {
        anim = GetComponent<Animator>();
        sr = GetComponent<SpriteRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        Move();
    }

    void Move()
    {
        float h = Input.GetAxisRaw("Horizontal");
        Vector3 temp = transform.position;

        if (h > 0)
        {
            temp.x += speed * Time.deltaTime;
            sr.flipX = true;
            anim.SetBool("Walk", true);

        }
        else if (h < 0)
        {
            temp.x -= speed * Time.deltaTime;
            sr.flipX = false;
            anim.SetBool("Walk", true);
        }
        else if (h == 0)
        {
            anim.SetBool("Walk", false);
        }
    }



}

1 Ответ

0 голосов
/ 03 февраля 2019

Вы устанавливаете 'temp' равным transform.position, но это не значит, что transform.position равно 'temp'.Здесь приведенный ниже скрипт должен дать вам то, что вы хотите

using UnityEngine;

public class PlayerController : MonoBehaviour
{

private float speed = 3f;
private Animator anim;
private SpriteRenderer sr;

void Awake()
{
    anim = GetComponent<Animator>();
    sr = GetComponent<SpriteRenderer>();
}

void Update()
{
    Move();
}

void Move()
{
    float h = Input.GetAxisRaw("Horizontal");

    transform.Translate(Vector2.right * (h * speed * Time.deltaTime));

    anim.SetBool("Walk", h != 0f);

    if (anim.GetBool("Walk"))
        Flip(h > 0f);
}

void Flip(bool facingRight)
{
    sr.flipX = !facingRight;
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...