[英]How do I make this checkpoint system work in unity3d?
我想让播放器首先从 position 开始。 然后在他们完成第一级后从检查点开始。 我已经尝试过这个脚本的不同迭代,它应该使用布尔检查玩家是否通过了触发器,如果他们有他们的 position 将等于开始时的检查点。 当游戏关闭并再次打开时,它必须记住布尔值。
现在玩家总是从检查点开始。
我尝试使用 playprefs 制作自己的 boolean,但最终使用了 BoolPrefs,但仍然无法正常工作。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public Rigidbody player;
public Transform startPoint;
public Transform checkPoint;
private void Start()
{
if (PlayerPrefsX.GetBool("level01Complete", false))
{
player.transform.position = startPoint.position;
}
if (PlayerPrefsX.GetBool("level01Complete", true))
{
player.transform.position = checkPoint.position;
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "HubTrigger")
{
PlayerPrefsX.SetBool("level01Complete", true);
}
else
{
PlayerPrefsX.SetBool("level01Complete", false);
}
}
}
这是我目前使用的 BoolPrefs 脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerPrefsX
{
public static void SetBool(string name, bool booleanValue)
{
PlayerPrefs.SetInt(name, booleanValue ? 1 : 0);
}
public static bool GetBool(string name)
{
return PlayerPrefs.GetInt(name) == 1 ? true : false;
}
public static bool GetBool(string name, bool defaultValue)
{
if (PlayerPrefs.HasKey(name))
{
return GetBool(name);
}
return defaultValue;
}
}
我是使用 PlayerPrefs 的新手,所以我可能忽略了一些明显的东西。
HubTrigger 是您完成第一关后通过的触发器。 所以应该是你第一次玩的时候从一个地方开始,然后一旦你通过hubtrigger,你就完成了第一关,然后你在加载游戏时从检查点开始。
PlayerPrefsX
看起来不错。 似乎您使用不正确。 您应该检查if (PlayerPrefsX.GetBool("level01Complete", false))
,如果为真,则设置检查点 position,否则设置开始 position:
private void Start()
{
if (PlayerPrefsX.GetBool("level01Complete", false))
{
player.transform.position = checkPoint.position;
}
else
{
player.transform.position = startPoint.position;
}
}
对于OnTriggerEnter
,您真的应该只在您击败级别 1 时设置level01Complete
:
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "HubTrigger")
{
PlayerPrefsX.SetBool("level01Complete", true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.