向前伸展旋转的播放器

时间:2018-08-02 00:24:47

标签: c# unity3d sprite

我正在尝试重新创建在游戏中使用的移动系统。它来自DS游戏,名为 Dragon Quest Heroes Rocket Slime ,玩家可以做的一件事就是按住A按钮并向伸展粘液的方向移动。在伸展的同时放开A会使其粘液朝伸展的方向倾斜。

这是一个可以说明这一点的gif:

Desired movement

我为玩家提供了许多状态枚举(步行,闲置,伸展,爆炸(伸展后))。当播放器伸展运动(空闲时按住空间)时,它们会沿输入的方向旋转,但是我不确定如何在该方向上缩放对象。

我的玩家精灵嵌套在一个空的游戏对象内,以便我可以从一侧缩放它(通过偏移玩家并缩放游戏对象)。我将播放器向输入方向旋转,但我不确定如何按照示例gif的方向将它们向前缩放。

version: 2
services:
  myService:
    image: serviceA from registry
     # Would like to modify a config file's content...

  mainAPI:
     ...

1 个答案:

答案 0 :(得分:1)

看起来我有点白痴。

如果我实际上是在旋转播放器时在播放器的轴上寻找一秒钟以上的时间,我会发现Y始终是他面对的方向,所以我要做的就是在y轴上缩放。 / p>

固定代码:

    if (curState == state.stretching)
    {

        rBody.velocity = new Vector2(0,0); //so we don't keep our momentum if we try to stretch while walking
        transform.rotation = Quaternion.LookRotation(playerBody.transform.forward, input);
        transform.localScale = new Vector3(1,1+pVelocity.magnitude/8,1);
        //we move back as the player scales
        transform.position = orgPos + new Vector3(pVelocity.x/8,pVelocity.y/8,0);

        if (input.magnitude > 0)
        {
            pVelocity = Vector2.ClampMagnitude(pVelocity + input / 2, 25);

        }
        else
        {
            pVelocity *= new Vector2(2, 2) * Time.deltaTime;
        }
    }