Unity2019_3D物理系统

本文介绍了Unity3D中的刚体组件及其如何影响物体碰撞行为,特别是IsKinematic属性在碰撞检测中的作用。此外,详细阐述了刚体和碰撞器的用法,以及碰撞和触发器的检测条件。还通过代码示例展示了如何使用射线检测进行物体交互,包括单次射线、多次射线和球形射线的使用方法。
摘要由CSDN通过智能技术生成

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);
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值