欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity中制作VR游戏焦点触发特定的游戏物体

程序员文章站 2024-01-18 22:10:28
...

首先是新建一个Vrint的脚本,并复制以下的代码!!!

using UnityEngine;
using System.Collections;
using VRStandardAssets.Utils;
using System;

public class Vrint: MonoBehaviour
{
    VRInteractiveItem VR;
    public  bool on;
    public event Action onTrigger;
    public event Action onOver;
    public event Action onOut;


    void Awake()
    {
        VR = GetComponent<VRInteractiveItem>() ?? gameObject.AddComponent<VRInteractiveItem>();
    }

    void OnEnable()
    {
        VR.OnOver += OnOver;
        VR.OnOut += OnOut;
    }

    void OnDisable()
    {
        VR.OnOver -= OnOver;
        VR.OnOut -= OnOut;
    }

    void OnOut()
    {
        on = false;
        
        if (onOut != null)
        { onOut(); }
    }

    void OnOver()
    {
        on = true;
        if (onOver != null)
        {
            onOver();
        }
    }


    private void OnTrigger()
    {
        on = true;
        if (onTrigger != null)
        {
            onTrigger();
        }
    }
}

保存该脚本,然后新建一个Trigger的一个脚本,并复制以下的代码:

using UnityEngine;
using System.Collections;
using VRStandardAssets.Utils;

public class Trigger: MonoBehaviour {
    
    VRInput input;
    public bool ison;
    TextMesh te;
    chufa cc;

    void Awake() {
        input = GameObject.Find("VRCamera").GetComponent<VRInput>();
        te = GameObject.Find("jiafen").GetComponent<TextMesh>();

    }
	void Start () {
     
            input.OnClick += delegate
            {
                //cc.on是用来判断用户是否触发了该物体
                if (cc.on) { 
                //判断游戏物体的标签为monkey的就加分
                    if (base.gameObject.tag == "monkey")
                    {
                        hexin.h += 10;
                        te.text = "得分:" + hexin.h;
                   
                    }
                     //判断游戏物体的标签为other的就减分
                    if (base.gameObject.tag == "other")
                    {
                        hexin.h -= 10;
                        te.text = "得分:" + hexin.h;

                    }
                    cc.on = false;
                    gameObject.SetActive(false);
                }
               
            };
	}
    void OnEnable() {
        cc = GetComponent<chufa>() ?? gameObject.AddComponent<chufa>();
    }
}

注意一定要把Trigger脚本挂在到需要判断的游戏物体上,并把射中需要加分的游戏物体的标签设置为monkey,射中需要减分的游戏物体设置为other。

相关标签: Unity