Точечный характер деформируется при перемещении.Лягкий вход - PullRequest
1 голос
/ 09 июля 2019

Я следую учебному пособию для основной игры 2d Unity.но даже когда у меня есть только 1 анимация для персонажа, когда я двигаю его, анимация становится шаткой, как будто один глаз становится больше, чем другой, или рука растет.Я связал некоторые изображения http://prntscr.com/ocpu52 http://prntscr.com/ocpuc8 http://prntscr.com/ocpum7

Я не понимаю, почему это происходит, какя могу это исправить?Кроме того, мой персонаж чувствует, что он отвечает на мои команды движения поздно, а также останавливается позже, чем должен.Я пытаюсь заставить его двигаться с постоянной скоростью и мгновенно остановиться.Я не знаю, какие необходимые кодовые блоки я могу показать, но я попытался поместить то, что я нахожу необходимым ниже, и вот изображение моих настроек твердого тела:

http://prntscr.com/ocpuy9.

public class PlayerController : MonoBehaviour
{
    public Vector2 movementDirection;
    public float movementSpeed;
    public Rigidbody2D rb;
    public float BASE_MOVE_SPEED = 1.0f;
    public Animator animator;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        processInputs();
        move();
        animate();
    }
    void processInputs() {
        movementDirection = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
        movementSpeed = Mathf.Clamp(movementDirection.magnitude, 0.0f, 1.0f);
        movementDirection.Normalize();

    }
    void move()
    {
        rb.velocity = movementDirection *BASE_MOVE_SPEED* movementSpeed * Time.deltaTime; 
    }
    void animate()
    {
        animator.SetFloat("Horizontal", movementDirection.x);
        animator.SetFloat("Vertical", movementDirection.y);
    }

}

Мой SpriteRenderer и шейдер находятся ниже:

enter image description here

enter image description here

1 Ответ

0 голосов
/ 09 июля 2019

GetAxis принимает вывод GetAxisRaw и делает с ним некоторые действия, чтобы заставить его вести себя подобно входу джойстика - у него есть мертвая зона, и он будет плавно переходить из состояния в предыдущем кадре в состояниена текущем кадре.Это может быть хорошо, если вы хотите, чтобы игра напоминала аналогичную палку и нажатие клавиш, но это также вносит некоторую задержку, так как государство должно покинуть мертвую зону и фактически выполнить переход в текущее состояние.

чтобы избавиться от задержки, вы можете просто захотеть использовать GetAxisRaw и удалить всю эту обработку, которая может привести к задержке:

movementDirection = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));

Как вы обнаружили, изменение ортографического размера камеры может исправить несоответствиемежду позициями спрайтов и позициями пикселей, на которые они должны отображаться.Вот что говорит Официальный блог Unity по теме :

Основы: что такое орфографический размер?

На орфографической камере размер орфографического изображения определяет, какво многих единицах в мировом пространстве высота экрана делится на.Таким образом, на высоте экрана 1080 с размером орфографии 5 каждая единица мирового пространства будет занимать 108 пикселей (1080 / (5 * 2)).Это 5 * 2, потому что ортогональный размер определяет размер, идущий от центра экрана к вершине.

Поэтому, если ваши настройки Sprite «Пиксели на единицу (PPU)» равны 108, они будут отображаться красиво.

Практический подход к достижению Pixel Perfect.

Чтобы применить это к реальному проекту, требуется немного больше соображений и планирование на будущее.Поскольку вы не можете настроить физическое разрешение целевого устройства, и у вас есть только очень ограниченный диапазон PPU (в виде варианта комплекта активов), единственное действительное число, с которым вы можете играть, - это орфографический размер.

Изменение размера орфографии приведет к увеличению или уменьшению пространства видимого мира.Это напрямую влияет на ваш игровой код и его необходимо учитывать.Вот таблица с различными сценариями масштабирования

Vertical Resolution   PPU     PPU Scale   Orthographics Size  Size Change   
768                   32      1x          12                  100%   
1080                  32      1x          16.875              140%     
1080                  48      1x          11.25               93.75%   
1080                  32      2x          8.4375              70.31%   
1440                  32      2x          11.25               93.75%   
1536                  32      2x          12                  100%
  • Размер орфографии = ((разрешение по вертикали) / (PPUScale * PPU)) * 0,5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...