oracle交互unity,Unity触发交互的几种方式

自己刚刚接触Unity,觉得很有意思,了解了几种触发方式,记录一下方便以后查阅

1.光线投射

简单来说就是用眼神杀死你

public static bool Raycast(Vector3 origin, Vector3 direction,out RaycastHit hitInfo, float maxDistance, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

origin 是光源点

direction 是发出的方向

maxDistance 是光线的距离

hitInfo 如果返回值是true,它会回调出被碰撞物体的信息

layerMask 是选定当前层内碰撞器,忽略其他层

queryTriggerInteraction 指定查询指令是否撞击触发器

返回值判断光线是否与其他物体交互

void Update () {

RaycastHit hit;

if(Physics.Raycast(transform.position,transform.forward,out hit,3.0f)){

// hit.collider.gameObject 获取到碰撞的物体进行操作

}

}

2.角色控制器

void OnControllerColliderHit(ControllerColliderHit hit){} 只有添加角色控制器组件才会触发这个方法, hit为碰撞的对象,例子如下

void OnControllerColliderHit(ControllerColliderHit hit){

if (hit.gameObject.tag == "playerDoor" ) { //碰撞物体的标签

AudioSource source = hit.gameObject.GetComponent ();

if(!source.isPlaying){

source.PlayOneShot (door_open_sound); //只执行一次的音频

}

hit.gameObject.transform.parent.GetComponent ().Play ("dooropen");

hit.gameObject.transform.Rotate(0,90,0);

InvokeRepeating ("close", 3.0f, 3.0f); //计时器

}

}

3.OnTriggerEnter

57a148d8e66b?utm_campaign=maleskine

胶囊碰撞器.png

只要两者有一个勾选Is Trigger 选项, 在碰撞范围内并且有一个有刚体组件就会触发 OnTriggerEnter方法,

可以调节触发范围的大小,来达到你想要的碰撞范围

void OnTriggerEnter(Collider col){

if (col.gameObject.tag == "Player") {

col.gameObject.SendMessage ("cellPickup");//触发col.gameObject的方法

Destroy (gameObject);//销毁

}

}

4.OnCollisionEnter

只有都没有勾选Is Trigger 选项,并且发起的碰撞的一方要有刚体,就会触发此方法

void OnCollisionEnter(Collision collision){

// print (GetComponent().count);

print ("刚体碰撞");

}

如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。

如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

以上是自己学习了解到的 ,如有不对请大神们指出来

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值