最近我无意中看见一道面试题 实现一个吊机的效果 然后在力臂的实现上遇到了点困难
在unity中 默认缩放为双向的
比如我们创建一哥Cube 之后再引擎中修改scale 很明显是双向缩放的
同理旋转也是以自己的中心点(重心)为圆心 旋转
如果想要以自己所设置的位置为圆心 只需设置一个父物体(空物体) 之后旋转父物体即可实现

但是缩放这个是通过父物体不能实现的 只能通过代码来实现
在这里插入图片描述
我们的思路是 我们通过代码来移动力臂的位置 之后因为缩放 在game模式下看到的好像是单向的缩放

  public Transform LengthPart;//改变长度的部分

    float scale;
    float speed = 0;
    bool islengthmove = true;
 private void LengthUpdate()
    {
        if (Input.GetKey(KeyCode.W))
        {
          
            scale += 0.05f;
            speed = 2f;
        }
        else if (Input.GetKey(KeyCode.S))
        {
            
            scale -= 0.05f;
            speed = -2f;
        }
        else
        {
            speed = 0;
        }

        if (islengthmove)
        {
            LengthPart.Translate(transform.forward * Time.deltaTime * speed);
        }

        LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, scale);
        if (LengthPart.localScale.z >= 9.3f)
        {
            islengthmove = false;
            LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, 9.3f);
        }
        else if (LengthPart.localScale.z <= 1.7f)
        {
            islengthmove = false;
            LengthPart.localScale = new Vector3(LengthPart.localScale.x, LengthPart.localScale.y, 1.7f);
        }
        else
        {
            islengthmove = true;
        }
    }

这样在game模式下 看起来就是单向缩放 但是还是有些许误差 我们可以用一些物体
遮挡起来 从而”骗“过玩家
希望我所写的对大家有帮助
如果有问题可以联系我 主页有我的联系方式

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐