gpt4 book ai didi

javascript - 为什么我不能让背景中的山脉以视差方式移动?

转载 作者:行者123 更新时间:2023-12-03 07:27:45 25 4
gpt4 key购买 nike

所以,我想让背景随着玩家特朗普而移动。我该怎么做?

var trump : Rigidbody2D;
var mountain = GetComponent(Rigidbody2D);

function fixedUpdate() {
mountain.position.x = trump.position.x * 2;
mountain.position.y = trump.position.y * 2;
if (mountain.position.y <= 0) {
mountain.velocity.y = 0;
}

}

enter image description here

最佳答案

我认为您的山脉不需要 RigidBody 组件 - 这些组件适用于执行碰撞并与游戏中的物理属性相关的对象。

在场景中移动游戏对象的正常过程是游戏对象的 Transform 组件,它具有您可以修改的 Position 属性。

请原谅 C#。

[SerializeField] private Transform _mountainRoot;
[SerializeField] private Rigidbody2D _trumpBody;

[SerializeField, Range(0f, 1f)] private float _parallaxFactor = 0.75f;

private Vector2 _lastTrumpPos;

private void Update()
{
// get the amount Trump moved since last update
float deltaTrumpPosX = _trumpBody.position.x - _lastTrumpPos.x;

// move the mountains by a factor of this movement
_mountainRoot.transform.Translate(deltaTrumpPosX * _parallaxFactor, 0f, 0f);

// cache position value to use on next update cycle
_lastTrumpPos = _trumpBody.position;
}

在这里,您将山脉的变换作为您想要操纵 Angular 色位置的内容,并使用 Angular 色的 Rigidbody2D。此外,您还可以使用正常值(0 到 1,将其视为 0 到 100 之间的百分比)来缩放视差效果。

在此 Update() 循环中,我们首先找出自上次更新以来 Angular 色移动了多少。我们将其当前位置与上次更新期间记录的位置进行比较,然后减去,留下差值/增量。

然后我们将这个增量值与我们的缩放因子应用于山脉。 Transform.Translate() 是一个修改位置的函数,在本例中我们只想修改 X/水平值。

最后,我们记录 Angular 色在世界中的位置并覆盖之前的值 - 这样我们就可以用它来计算下一次更新的增量。

关于javascript - 为什么我不能让背景中的山脉以视差方式移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com