在Unity 的 Collider2D 组件中,Include Layers 和 Exclude Layers 看似功能重叠,但实际设计上并非冗余,而是通过层级过滤的优先级规则实现互补。以下是具体分析:1. 功能定位与处理流程 属性
在PlayerControl.cs脚本中添加如下: private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Spike")) { PlayerDead(); animator.SetTrigger("dead"); Debug.LogWarning("dead"); //打开游戏结束界面 GameManager.instance.GameOver(isDead); } } 5.bug修复 一些小bug修复,如下 6.打...
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MovementController : MonoBehaviour { //1 public float movementSpeed = 3.0f; // 2 Vector2 movement = new Vector2(); // 3 Rigidbody2D rb2D; private void Start() { // 4 rb2D = GetComponent<Rigidbody...
Collider2D型对象.contactCaptureLayers也会影响这个碰撞器所依附的游戏对象身上脚本的OnCollisionXXX2D方法和OnTriggerXXX2D方法是否执行。当本变量和Collider2D型对象.contactCaptureLayers都包含指定Layer层,这个碰撞器所依附的游戏对象身上脚本的OnCollisionXXX2D方法和OnTriggerXXX2D方法才会执行。 Collider2D型对象.composite...
选中Boar,点击Add Component,选择RigitBody 2D 将Collision Detection设置为持续不断的(Continuous),并冻结Z轴 点击Add Component创建Box Collider 2D 点击Edit Collider将Box Collider设置为此大小 现在的Box Collider会导致人物穿过野猪时,会发生体积碰撞问题。这时就需要进行图层排除(Exclude Layer)。
刚体碰撞检测:通过给物体添加刚体组件(Rigidbody),可以启用物体之间的物理交互和碰撞检测。 当两个带有刚体组件的物体发生碰撞时,Unity会自动进行碰撞检测,并触发相应的碰撞事件(如OnCollisionEnter、OnCollisionStay、OnCollisionExit等),供开发者处理。 Trigger触发器:Trigger是一种特殊的碰撞器(如Collider组件的isTrigger属...
CompositeCollide2D类是复合碰撞器,继承自Collider2D类,用于将多个相邻的碰撞器合并成一个整体。这样做之后,相邻碰撞器的范围会合并到一起,并且碰撞性能会有所提升。 我们可以创建一个空的游戏对象A,然后在它身上添加CompositeCollider2D组件。 创建若干个游戏对象作为A的子物体,在这些子物体身上都添加上2D碰撞器,并勾...
Collision碰撞,造成物理碰撞,可以在碰撞时执行OnCollision事件。想要使用物理碰撞效果时 使用OnCollision;运动一方必须具有刚体具有刚体的一方有物理效果,无刚体的一方不产生物理效果碰撞的双方不可同时勾选Kinematic运动学双方必须关闭Trigger触发器OnTriggerEnter2DTrigger触发,取消所有的物理碰撞,可以在触发时执行OnTrigger事件。
(groundCheck.transform.position, checkRadius); } private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Spike")) { animator.SetTrigger("dead"); } } private void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.CompareTag("Fan")) { rb.velocity = new ...
解决方法一:将Rigidbody2D的CollisionDetection属性从Discrete改为Continuous 但是很耗性能。 解决方法二:通过射线时刻检测“即将走的距离”上是否会发生碰撞,从而决定最终走多远的距离 这个方法甚至可以不挂刚体了,直接通过射线来获取碰撞。(但是OnCollisionEnter2D那些函数也不能用了) ...