Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从游戏对象创建不同的可点击部分_C#_Unity3d_Raycasting - Fatal编程技术网

C# 如何从游戏对象创建不同的可点击部分

C# 如何从游戏对象创建不同的可点击部分,c#,unity3d,raycasting,C#,Unity3d,Raycasting,我想创建一个可以通过两种不同方式单击的游戏对象。 这张图片只是一个例子,但这正是我想要的。有两种不同的可点击生命点,它们具有不同的功能。第一个黑色的应该在x坐标和y坐标上移动游戏对象。黄色部分会改变游戏对象的角度。我和raycast试过一些东西,但没有成功。也许有人能举个好例子吗?那太好了 问候 Sander您可以在同一游戏对象中使用多个碰撞器,并更改其中心和大小属性以正确定位它们。我认为这是最简单的方法 然后使用钩子OnCollisionIntercollision,如以下示例所示: pub

我想创建一个可以通过两种不同方式单击的游戏对象。

这张图片只是一个例子,但这正是我想要的。有两种不同的可点击生命点,它们具有不同的功能。第一个黑色的应该在x坐标和y坐标上移动游戏对象。黄色部分会改变游戏对象的角度。我和raycast试过一些东西,但没有成功。也许有人能举个好例子吗?那太好了

问候
Sander

您可以在同一游戏对象中使用多个碰撞器,并更改其中心和大小属性以正确定位它们。我认为这是最简单的方法

然后使用钩子OnCollisionIntercollision,如以下示例所示:

public class CollisionHandler : MonoBehaviour {

    private IDictionary<Collider, string> colliders;
    void Start () {
        int i = 0;
        colliders = new Dictionary<Collider, string>();

        foreach (var collider in GetComponents<Collider>())
            colliders.Add(collider, "collider_" + i++);
    }

    void OnCollisionEnter(Collision collision)
    {
        Debug.Log(colliders[collision.contacts[0].thisCollider]);
    }
}

类似的方法是将2个空的游戏对象作为游戏对象的子对象;他们每个人只有一个碰撞器,并有一个脚本来处理碰撞。

想了想,但没有意义。您无法请求哪个碰撞器被点击。如果对象上有两个碰撞器,OnCollisionCenter将对两个碰撞器都起作用。已经查过了…那不是真的。我用代码更新了我的答案,告诉你如何做到这一点。我测试过了,它能工作。