我有六个面板,显示了播放器的当前效果。只有当玩家具有活动效果(已编码)时才会出现它们。我想给面板带来一些美学效果,它们应该从左侧看起来非常快,并且当它们强行进入画布时应该停止移动(不完全是,左侧的一些应该保持在外面,所以看起来好一点)。我已经对机芯进行了编码,但我不知道如何阻止面板移动。
//The effect bar system gets activated
effectbar.SetActive(true);
//The movement vector
Vector3 movePanel = new Vector3(100, 0, 0);
for (int i = 0; i < effectCount; i++)
{
effectbar.gameObject.transform.GetChild(i).gameObject.SetActive(true);
effectbar.gameObject.transform.GetChild(i).transform.Translate(movePanel * Time.deltaTime * 3f);
activeCount++;
}
答案 0 :(得分:0)
您可以使用Vector3.Lerp(start, end, time)功能。
以下是一个示例类:
public class MoveObjectTowards : MonoBehaviour
{
public Transform TargetTransform;
public float Speed;
private void Update ()
{
if (!IsAtTarget())
{
MoveTowardsTarget();
}
}
private void MoveTowardsTarget()
{
gameObject.transform.position = Vector3.Lerp(gameObject.transform.position, TargetTransform.position,
Speed * Time.deltaTime);
}
private bool IsAtTarget()
{
return gameObject.transform.position == TargetTransform.position;
}
}
你应该将它附加到你的effectBar
gameObject并在检查器中设置valeus,之后它应该可以工作。你还必须创建一些作为“墙”的对象。并将其分配给public Transform TargetTransform
。
答案 1 :(得分:0)
所以我编写了以下代码:
<Route component={Home} exact path="/" />
<Route component={ChannelScreen} path="/channel/:channelId" />
发生以下情况:小组不会移动。我编码错了吗?
编辑:我想这是因为我没有使用float startTime = Time.time;
float speed = 1f;
float distanceDone = (Time.time - startTime) * speed;
Vector3 panelStart = new Vector3(effectbar.gameObject.transform.GetChild(i).gameObject.transform.position.x, effectbar.gameObject.transform.GetChild(i).gameObject.transform.position.y);
Vector3 panelMovement = new Vector3(effectbar.gameObject.transform.GetChild(i).gameObject.transform.position.x+140,effectbar.gameObject.transform.GetChild(i).gameObject.transform.position.y);
Vector3 panelStop = new Vector3(panelMovement.x,
effectbar.gameObject.transform.GetChild(i).gameObject.transform.position.y);
effectbar.gameObject.transform.GetChild(i).gameObject.transform.position = Vector3.Lerp(panelStart, panelStop, distanceDone / Vector3.Distance(panelStart,panelMovement));
代替Transform
,对吗?