【问题标题】:How to get the Distance, Collision and Direction for each game object in my list?如何获取列表中每个游戏对象的距离、碰撞和方向?
【发布时间】:2012-12-20 11:31:16
【问题描述】:

所以,我有一个包含游戏对象的列表,我非常不确定如何获得每个对象的距离、碰撞和方向。使用 SphereCast 来满足我的需求是合适的,因为我知道只有类函数才能为我做这件事。 我编写了代码来完成任务,但它只为列表中的 1 个游戏对象获取数据,在所有这些对象中,我希望从列表中的所有游戏对象中获取数据。有什么改变代码或方法的想法吗?

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class example : MonoBehaviour {

    RaycastHit hit;

    Vector3 direction;

    public static  List<float> sphereCast = new List<float>();

    void Update() {
        CharacterController charCtrl = GetComponent<CharacterController>();
        foreach(GameObject g in xmlreaderUnityObject.unityGameObjectsToCDP)
        {
            Vector3 p1 = g.transform.position;
            if (Physics.SphereCast(p1, charCtrl.height / 2, g.transform.forward, out hit,1))    
            { 
                float distance = 0;
                float angleBetween = 0;
                float contact = 0; 
                if(hit.collider.enabled)
                {
                    direction = hit.transform.position - p1;
                    angleBetween = Vector3.Angle(g.transform.forward, direction);
                    contact = 1;
                    distance =  hit.distance;
                }
                print("Distance: "+ distance + " Collision: " + contact + " Direction: " + angleBetween + " hit point: "
                        +hit.point + " player position: " + p1);

                sphereCast.Add(contact);
                sphereCast.Add(distance);
                sphereCast.Add(angleBetween);
            }
        }

    }
}

【问题讨论】:

  • 您是否尝试设置更大的半径?你为什么使用goto?正如我所看到的,整个开关盒构造是显而易见的。您在日志视图中获得了多少个打印输出,1 个或多于 1 个但始终具有相同的值?
  • 每个处于活动状态的游戏对象都有自己的值,处于非活动状态的游戏对象不会发送任何内容,但它们应该

标签: c# unity3d distance collision game-physics


【解决方案1】:

原因是它只击中了一个 GameObject。我已经设置了一个场景,您可以在其中显示它击中的所有游戏对象 + 发送它的游戏对象。 Project Example

【讨论】:

  • 嘿兄弟!关键是我需要从被击中的物体中得到一个数字。例如:立方体撞击球体,我们将从球体中获取数字(碰撞、方向、距离)。如果不是,将得到空数字。这需要为场景中的所有对象实现。那么,如果碰撞得到数字,而不是空值,有什么想法吗?
  • 我已经更新了脚本,所以现在如果没有命中任何东西它会返回 0,否则它会从它命中的对象返回数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多