【发布时间】:2019-09-29 09:05:51
【问题描述】:
我正在尝试制作一个 2.5D SHMUP 类型的游戏,在该游戏中,世界不断向前移动,而玩家的飞船和相机保持原位。这意味着即使世界在移动,如果玩家的船在屏幕中间,它也会停留在那里。
为此,我创建了一个名为 Moving World 的空游戏对象,并将以下脚本附加到它:
public class movingWorldController : MonoBehaviour
{
private float movementSpeed = 5f;
void Update()
{
transform.position = transform.position + new Vector3(0, 0, movementSpeed * Time.deltaTime);
}
}
然后我将相机和宇宙飞船添加为该对象的子对象,因此它们确实与移动的世界对象一起移动。但是,我还为飞船附加了一个脚本,以允许它根据玩家的输入移动,如果我启用飞船上方的脚本,飞船将停止响应玩家的输入。飞船的脚本如下所示:
public class ShipController : MonoBehaviour
{
public Rigidbody rb;
public float moveSpeed = 5f;
private Vector3 movement;
void Update()
{
movement.x = Input.GetAxisRaw("Horizontal");
movement.z = Input.GetAxisRaw("Vertical");
}
private void FixedUpdate()
{
rb.MovePosition(rb.position + movement * moveSpeed * Time.deltaTime);
}
}
当世界移动脚本被禁用时,飞船控制器工作得很好,所以我怀疑世界脚本以某种方式覆盖了宇宙飞船的位置。我该如何解决这个问题?
有关 POC 示例,请观看此视频:https://www.youtube.com/watch?v=-fVjWgfUKn4&t=282s(跳转到 4:00 观看游戏的实际运行)。请注意,在 video gamemaker 中用于实现效果,而我正在尝试仅使用代码来实现类似的效果。
【问题讨论】:
-
你的父母有刚体吗?
-
localPosition -
@Menyus 否。父级没有刚体,因为它不需要使用物理引擎。
-
是否有理由让相机和宇宙飞船成为背景/障碍物的孩子?只要让相机和宇宙飞船成为世界其他地方的兄弟姐妹。
-
即使在Unity官方shmup tutorial中,相机和玩家都是顶级游戏对象...