雷击中时如何仅递增/递减一

Posted

技术标签:

【中文标题】雷击中时如何仅递增/递减一【英文标题】:How to increment/decrement only by one when Ray hits 【发布时间】:2021-05-17 07:05:47 【问题描述】:

所以,游戏就是要找到不同。当射线击中隐藏对象的对撞机时,它应该只添加一个分数并将私有整数差异值减一。但是当光线撞击物体碰撞器时,它会在光线撞击碰撞器时不断增加/减少。我该如何改变呢?方法如下:


void Update()
    

        camRay = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
        Debug.DrawRay(camRay.origin, camRay.direction, Color.red, 1);

        if (Input.touchCount > 0)
        
            if (Physics.Raycast(camRay, out result))
            
                /*
                    obj = result.collider.gameObject;
                    score = score + 1;
                    differences= differences - 1;
                    score1.text = " " + score;
                    predmet.Play();                
                */

                if (result.collider.CompareTag("Slike") && !hitOnce)
                
                    score +=1;
                    differences-= 1;
                    score1.text = " " + score;
                    predmet.Play();
                
                else
                
                    hitOnce = false;
                

                if (differences == 0)
                
                    WinPanel.SetActive(true);
                
            
        
               

        
    

【问题讨论】:

【参考方案1】:

当您第一次击中对象时,您可以移除或禁用它的碰撞器组件。这应该可以防止它被更多的 Raycast 击中。

第一次点击时,类似:

result.collider.enabled = false;

【讨论】:

由于我有 4 个具有相同标签“Slike”的对象,我如何才能仅从一个对象中删除对撞机,以及当第一次命中发生时我现在如何? 好吧,对 Raycast 命中的结果使用 result.collider.enabled = false 应该只禁用被命中的游戏对象上的碰撞器。您必须单独击中每个对象才能移除每个对撞机。我不确定您所说的“第一次打击发生的时间”是什么意思。 好的,我现在明白了,我会试试看它是否有效。

以上是关于雷击中时如何仅递增/递减一的主要内容,如果未能解决你的问题,请参考以下文章

仅使用纯javascript在单击按钮时动态生成表单输入字段递增和递减

如何配置STM32定时器在每次递增/递减时触发中断?

如何在限制过滤器中动态分配变量并递增/递减其值?

检查对象的变换是递增还是递减(没有刚体)?

产品在购物车中时显示数量标签(Swift 5)

什么会导致for循环在它应该递增时递减?