复健,跟麦扣老师的教程注意到的新方法
Unity2018教程2D入门:07 跳跃动画 LayerMask_哔哩哔哩_bilibili
目的是检测玩家是否落地,然后切换动画
自己的实现就是简单的检测速度:
if (m_rb.velocity.y > -0.1)
{
anim.SetBool("Falling", false);
}
麦扣老师的方法:检测玩家是否与地面这个Layer产生碰撞,产生碰撞即落地
具体步骤:
1.将Tilemap图层设置为Ground
2.获取LayerMask
LayerMask ground;
ground = 1 << LayerMask.NameToLayer("Ground");
(这边记得要用移位运算给LayerMask赋值)
3.使用UnityAPI:Collider2D.IsTouchingLayers()进行碰撞检测
if (m_col.IsTouchingLayers(ground))
{
anim.SetBool("Falling", false);
}
优化方法:
平时开发时应该会用向下的射线检测是否落地(相比之下可以排除墙体等的影响)文章来源:https://www.toymoban.com/news/detail-420988.html
但这个API在某些特定情况下应该有用...文章来源地址https://www.toymoban.com/news/detail-420988.html
到了这里,关于[Unity学习日志]用Collider2D.IsTouchingLayers()进行碰撞检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!