【从零学习Unity】3D人物自体碰撞检测
2 年前
· 来自专栏
Unity从零开始
有时候我们需要对于一个非凸物体,如领带男3D人物进行自体碰撞检测,查看其上肢或者下肢等部分有无模型碰撞(俗称“穿模”)的情况,那么该如何解决这个问题呢?
1碰撞检测器
碰撞检测器是unity自带的的碰撞系统,需要目标对象先挂在rigidbody刚体,然而碰撞检测器只能对整体对象挂载collider,如何实现开头提出的人物自体碰撞检测呢?可以考虑在层次界面下,分别对人体部位进行碰撞挂载。
2局部挂载
在层次导航栏,我们可以看到unity场景中的所有物体,找到我们的领带男人物,其骨骼系统下对身体各个关键关节部位都进行了建模,为了方便快速查找,我们选择搜索框,输入“hand”。
选择右手hand_r,可以看到场景中领带男的右手出现XYZ坐标系,inspecter导航页出现其位置信息,选择Add Componet,依次添加rigidbody以及mesh collider组件,对右手添加刚体和碰撞器,同时我们设定左手为刚体,即可完成局部挂载。
此时选中场景中的人物,可以看到检测器出现在场景中,表示挂载成功,这里我选择的是左手作为碰撞检测,右手作为刚体。
3编写检测脚本
在project新建一个C#或者JS文件,拖拽挂载到刚才的hand_r对象上,双击文件编写如下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class control : MonoBehaviour
// Start is called before the first frame update
void Start()
// Update is called once per frame
void Update()