1.注意这里,本来人物是与地面有接触(甚至穿模),当让人物自己行走的时候,会出现离开地面一段距离,这是为什么呢。是因为人物与地面发生了碰撞检测,导致错开。
2.为什么当我给子弹添加上了这个脚本之后,当子弹碰到玩家的时候子弹会消失,但是碰到其他物体的时候,子弹不会消失呢?
碰撞检测与触发检测的知识点没有完全弄明白:
首先是碰到了这样的问题:
那首先需要明白“触发”所需的条件
其中一个物体是刚体,其中一个物体是触发器即可,且两个物体的碰撞体积有相交的部分。
可以其中一个物体既是刚体也是触发器(例如我们让子弹具有这个属性)
也可以一个物体是刚体,另外一个刚体是触发器。
当然两个物体都是触发器,两个物体都是刚体也是可以的。
(带有角色控制器的话也会算入“具有刚体”这样的条件)
因此一般来说,让子弹实现碰到其他物体后便消失,我们是选择让子弹本身就具有刚体和触发器的属性。然后使用以下函数:
private void OnTriggerEnter(Collider other)
{
Destroy(this.gameObject);
}
但是如果子弹的生成方式如图:在物体周围生成子弹,那么子弹和子弹,还有子弹和产生子弹的这个方块也会发生触发函数,所以也会消失
因此我们就需要这样:
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Bullet")
{
return;
}
else
{
if (other.gameObject.tag == "Player")
{
Destroy(other.gameObject);
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
//Debug.Log("11111");
Destroy(this.gameObject);
}
}
总结一下的话应该就是:子弹碰到任何其他物体(除了子弹自身(通过标签实现)),子弹都会消失
为了这么做,得给子弹添加上刚体和触发器,并给子弹自身添加上标签
这样就成功了。
3.将子弹拖拽到场景中时如果位置不是零,在生成子弹的时候,会使得子弹不是在母体的位置生成而是会自带位置偏移量
这是因为一开始直接拖拽到场景里 然后位置不是0 然后就拖拽到文件里面成为预制体了结果自带位置偏移量,那么生成子弹时就会自带偏移量
清零后效果正常。
4.在设定人物从下往上跳到平台上时
当人物左右移动时会出现卡到砖块间的bug
(此时平台具有这些组件)
这是因为这个tilemap的砖块图形中包含了多层,这时候这个弧形会变成这样
如果只有一层,弧形会是这样,此时人物不会卡到砖块间
说明这种不同层级间最好不要用一个tilemap来实现
Input.GetMouseButton(0)
和Input.GetMouseButtonDown(0)