Unity2019_3D物理系统

Unity2019_3D物理系统_第1张图片

Unity2019_3D物理系统_第2张图片

Is Kinematic是否符合运动学 勾选上的物体,发生碰撞不受物理引擎的影响,例如弹开,只有碰撞属性。

下方可以设置fixuptate的执行事件

 Unity2019_3D物理系统_第3张图片

刚体常用的方法

Unity2019_3D物理系统_第4张图片

刚体是给物体附加一些物理属性的

碰撞器是检测碰撞的

碰撞器勾选IsTrigger之后,碰撞器会作为触发器使用,没了碰撞器的属性

Unity2019_3D物理系统_第5张图片

 碰撞和触发检测的条件

Unity2019_3D物理系统_第6张图片

 力的常用函数

Unity2019_3D物理系统_第7张图片

物理材质

Unity2019_3D物理系统_第8张图片

Unity2019_3D物理系统_第9张图片

 Unity2019_3D物理系统_第10张图片

关节组件

Unity2019_3D物理系统_第11张图片

3D射线

Unity2019_3D物理系统_第12张图片

 

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();
		// 与哪个层级交互,获取那个层级
		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);
			}
		}
	}
}

你可能感兴趣的:(Unity2019,3d)