移动时像素化字符变形。延迟输入

时间:2019-07-09 16:51:00

标签: c# unity3d graphics

我正在遵循基本2d统一游戏的教程。但是即使当我移动角色时,即使角色只有1个动画,动画也会变得像眨眼一样,例如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和Shader如下:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

GetAxis接受GetAxisRaw的输出,并对其进行一些操作,使其行为与操纵杆输入更相似-它具有一个死区,并且它将在前一个状态之间平滑过渡帧到当前帧的状态。如果您希望在使用模拟摇杆和按键之间有类似的游戏感觉,那么这可能会很好,但是由于状态必须离开死区并实际过渡到当前状态,因此还会引入一些滞后。

因此,要摆脱滞后,您可能只想使用GetAxisRaw并删除所有可能导致滞后的处理:

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

正如您所发现的,更改相机的正交尺寸可以修复子画面的位置与要渲染到其上的像素的位置之间的不匹配。这就是Official Unity blog says on the topic

  

基础知识:什么是正字大小?

     

在正交摄影机上,正交尺寸决定了屏幕高度在世界空间中划分成多少个单位。因此,在屏幕高度为1080(正交大小为5)的情况下,每个世界空间单位将占用108个像素(1080 /(5 * 2))。之所以为5 * 2,是因为正交大小指定了从屏幕中心到顶部的大小。

     

因此,如果您的Sprite的“单位像素数”(PPU)设置为108,则可以很好地呈现。

     

实现像素完美的实用方法。

     

要将其应用于实际项目,需要更多的注意事项并预先计划。由于您无法调整目标设备的物理分辨率,并且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
  •