检测即时刷新对象的碰撞

Detect Collision for an instantly refreshed object

所以我有一个 "Connect4" 游戏的旧代码,它是几年前写的,现在我在获取结果并为 unity3D 项目重建它们时遇到了很大的问题。

问题是每个游戏对象(我已经设法在场景中实例化)都意味着要在每一帧中被销毁和重新实例化(我感觉这真的不仅仅是一个帧时间);想要及时获得每个游戏对象的颜色似乎真的很有挑战性,我现在应该不输入创建的代码我应该只从我得到的图形结果中获取信息。

所以现在我有一块盒子,其网格布置会根据玩家的回合改变颜色(红色代表 cp,黄色代表 plyer)。

我创建了一个带有碰撞器的固定盒子,并想让游戏对象在每一帧都与它碰撞,但我失败了。

PS: 我测试了这段代码,我在这个社区找到的每一个解决方案都希望能找到一些帮助,谢谢。

using UnityEngine;
using System.Collections;

public class SelectorCode : MonoBehaviour
{
    public Collision other;

    public GameObject GO;

    void OnTriggerEnter(Collider other)
    {
        GO = other.gameObject;


    }
    void OnTriggerStay(Collider other)
    {
        GO = other.gameObject;


    }
    void OnTriggerExit(Collider other)
    {
        GO = other.gameObject;


    }

    void Update()
    {

        GO = this.other.gameObject;

    }
}

首先确保 SelectorCode 组件附加到的对象具有触发碰撞器(选中 属性 "Is Trigger")。

接下来,您将在 Update 方法中使用 GO = this.other.gameObject; 出现错误,因为 other 从未被分配。我认为您应该删除该行。

最后,在 OnTriggerExit 中,您将离开对撞机的对象放入 GO,这没有意义,您可能应该将 GO 分配给 null 此时:

void OnTriggerExit(Collider other)
{
    if (other.gameObject == GO) 
    {
        GO = null;
    }
}