美文网首页AR/VR/MRAR之道
AR Foudation功能记录(一) ------ 靠近物体触

AR Foudation功能记录(一) ------ 靠近物体触

作者: 千喜Ya | 来源:发表于2019-07-07 15:38 被阅读4次

    实现思路 : 在ARcamera下增加Cube(上面带有BoxCollider),勾选掉其MeshRender并添加Rigibody组件,在要触发物体上增加BoxCollider,调整好两个boxcollider的范围,那么这两个boxcollider碰撞到会触发物体上的OnCollisionEnter函数,在此写逻辑即可

    一.ARCamera下的Cube

    二.物体上添加Boxcollider

    三.新建ColliderParent函数

    这里因为有可能需要多个碰撞物体,如果将脚本挂在ARCamera下的Cube身上然后通过tag去分辨碰撞到了哪个物体,我怕后面此脚本会非常臃肿,因此我选择将脚本挂在碰撞物体上,然后新建一个父脚本,这样结构会非常清晰,同时也可以将相同行为抽象出来

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    //碰撞脚本的Parent(摄像机与场景中人物的碰撞)
    public class ColliderParent : MonoBehaviour
    {
        public GameObject NextObject;
        
        public virtual void OnCollisionEvent(GameObject collisionObj)
        {
    
        }
        public void OnCollisionEnter(Collision collision)
        {
            OnCollisionEvent(collision.gameObject);
        }
    }
    

    四.具体碰撞函数实现

    也要注意判断碰撞的tag是不是ARCamera

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    //门的碰撞触发函数
    public class DoorCollider : ColliderParent
    {
        bool isOneClick = false;
        Animator animator;
        public AudioClip openDoorClip;
        private void Start()
        {
            animator = transform.parent.GetComponent<Animator>();
        }
        public override void OnCollisionEvent(GameObject collisionObj)
        {
            if(!isOneClick && string.Compare(collisionObj.tag, "ARCamera", System.StringComparison.Ordinal) == 0)
            {
                isOneClick = true;
                //触发门打开
                animator.Play("kaimen");
                GetComponent<BoxCollider>().enabled = false;
                NextObject.SetActive(true);
                
                MainData.instance.PlayEffectAudio(openDoorClip,null);
            }
        }
    }
    

    将该脚本挂在碰撞物体上就完成了

    相关文章

      网友评论

        本文标题:AR Foudation功能记录(一) ------ 靠近物体触

        本文链接:https://www.haomeiwen.com/subject/kywbhctx.html