c# - 我在使用统一制作的游戏中有一种滞后,这与地面检查有关
问题描述
当跑步者接触地面时,布尔值不会在他在地面上的整个期间保持真实
我为跑步者制作了两个 boxcolliders2D :一个与地面碰撞,另一个设置为触发器以检查他是否接地
这是与地面检查相关的代码部分(它应该也可以播放很好的脚步声)
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Ground")
{
isGrounded = true;
footSteps.Play();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
isGrounded = false;
footSteps.Stop();
}
}
也许如果我只是向您展示整个代码,您将能够更好地帮助我(我希望我的代码不是那么混乱)
public float speed;
public float jumpForce = 10f;
public float speedMultiplier;
public float speedIncreasedMilestone;
private float speedMilestoneCount;
private Rigidbody2D rb;
private Collider2D myCollider;
public Animator anim;
public AudioSource footSteps;
public bool isGrounded = false;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
if(transform.position.x < speedMilestoneCount)
{
speedMilestoneCount += speedIncreasedMilestone;
speedIncreasedMilestone = speedIncreasedMilestone * speedMultiplier;
speed = speed * speedMultiplier;
}
if(isGrounded == true)
{
rb.velocity = new Vector2(-speed * Time.deltaTime, rb.velocity.y);
anim.SetBool("Condition",true);
}
if(Input.GetKeyDown(KeyCode.Space) && isGrounded == true)
{
anim.SetBool("Condition", false);
rb.velocity = new Vector2(rb.velocity.x,jumpForce);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Ground")
{
isGrounded = true;
footSteps.Play();
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
isGrounded = false;
footSteps.Stop();
}
}
}
解决方案
每当您遇到此问题时(即某项操作花费的时间超出预期),您可以选择两种策略:
- 检查您是否可以不那么频繁地执行该操作
- 检查您是否可以更快地执行操作
在这种情况下,您似乎只需要在玩家尝试执行跳跃时知道玩家是否接地。所以这就是你想要进行检查的时候。
推荐阅读
- batch-file - 从 .txt 文件中读取 BATCH,而不使用文字路径
- python-3.x - REST API POST 在 curl 中有效,但在 python 中无效
- angular - 如何使用 Angular5、ngrx5 使用 Jasmine / Karma 测试 ngrx/效果?
- javascript - 未捕获的 RangeError:JSON.stringify 处的字符串长度无效
- python - Keras 条件 WGAN-GP 中的单个数字样本
- linux - 无法启动新贵作业,错误:无法打开输入文件
- javascript - 如何使用动画使数据视图可拖动
- python-3.x - Python 套接字属性
- python - -bash:python setup.py 开发:找不到命令
- tableau-api - Tableau - 在甘特图上绘制特定日期