Is Kinematic是否符合运动学 勾选上的物体,发生碰撞不受物理引擎的影响,例如弹开,只有碰撞属性。
下方可以设置fixuptate的执行事件
刚体常用的方法
刚体是给物体附加一些物理属性的
碰撞器是检测碰撞的
碰撞器勾选IsTrigger之后,碰撞器会作为触发器使用,没了碰撞器的属性
碰撞和触发检测的条件
力的常用函数
物理材质
关节组件
3D射线
using UnityEngine;
public class RayTest : MonoBehaviour
{
Camera camera;
public int laymask;
void Start()
{
Debug.DrawLine(transform.position, transform.position + transform.forward, Color.red, 10, true);
Debug.DrawRay(transform.position, transform.forward, Color.red, 10, true);
camera = GameObject.Find("Camera").GetComponent<Camera>();
// 与哪个层级交互,获取那个层级
laymask = LayerMask.GetMask("Boss", "UI");
//球形射线
Collider[] Clis = Physics.OverlapSphere(transform.position, 3f, laymask);
for (int i = 0; i < Clis.Length; i++)
{
Debug.Log("4444444球星体碰撞到 " + Clis[i].gameObject.name);
}
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
第一种是屏幕发射射线;
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit1, 100f, laymask))
{
Debug.Log("111111射线击中" + hit1.point + "击中的物体名称 " + hit1.collider.gameObject.name);
}
第二种是从一个位置往前发射射线
if (Physics.Raycast(transform.position, transform.forward, out RaycastHit hit2, 100f, laymask))
{
Debug.Log("222222射线击中" + hit2.point + "击中的物体名称 " + hit2.collider.gameObject.name);
}
RaycastHit[] hits = Physics.RaycastAll(transform.position, transform.forward, 100f, laymask);
for (int i = 0; i < hits.Length; i++)
{
Debug.Log("333333射线击中的物体有 " + hits[i].collider.gameObject.name);
}
}
}
}