最近我无意中看见一道面试题 实现一个吊机的效果 然后在力臂的实现上遇到了点困难
在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模式下 看起来就是单向缩放 但是还是有些许误差 我们可以用一些物体
遮挡起来 从而”骗“过玩家
希望我所写的对大家有帮助
如果有问题可以联系我 主页有我的联系方式