public float slowAmount;
public float effectDuration = 3f;
private Dictionary<GameObject, float> dragDic = new Dictionary<GameObject, float>();
private Dictionary<GameObject, float> angDic = new Dictionary<GameObject, float>();
private Dictionary<GameObject, KeyValuePair<float, float>> DragDic = new Dictionary<GameObject, KeyValuePair<float, float>>();
void OnTriggerEnter(Collider coll)
{
if (coll.gameObject.GetComponent<InteractiveObjectType>() != null)
{
GameObject targetGo = coll.gameObject;
Rigidbody targetRB = targetGo.GetComponent<Rigidbody>();
dragDic.Add(targetGo, targetRB.drag);
angDic.Add(targetGo, targetRB.angularDrag);
}
**// drag manipulation happens here**
}
void OnTriggerExit(Collider coll)
{
GameObject targetGo = coll.gameObject;
Rigidbody targetRB = targetGo.GetComponent<Rigidbody>();
for (int i = 0; i < dragDic.Count; i++)
{
foreach (float target in dragDic.Values)
{
targetRB.drag = target;
}
}
for (int i = 0; i < angDic.Count; i++)
{
foreach (float target in angDic.Values)
{
targetRB.angularDrag = target;
}
}
dragDic.Clear();
angDic.Clear();
}
所以,當物體進入該觸發收集某些變量(在這種情況下,它的風阻和angularDrag),並將其存儲到OnTriggerExit返回其存儲的值是什麼,我想在這裏實現的。此外,我正在嘗試這樣做,因爲我想在OnTriggerEnter的這裏更改這些值,並使它們在之後返回原始狀態。創建字典和返回值
但是,我並沒有把所有的對象都取回來,但只有其中一個取回了它。
編輯:看起來我的解釋比我想象的更差,所以讓我再試一次。 這個問題是由一個簡單的機制發生的,我試圖通過一個簡單的機制來操縱一個rigidBody的drag和angularDrag。然而,同時這個觸發器中可能有很多gameObjects,它內部的gameObjects具有不同的drag和angularDrag值,我看到它需要臨時存儲並在OnTriggerExit上返回它們。我現在所在的地方是,在操作機制發生完成後,我將其中一個gameObject作爲其「舊值」返回,但其餘的都停留在該狀態而未恢復原始值。
目前尚不清楚你的問題是什麼。我所知道的是當碰撞發生時你想存儲它們。你想在觸發器退出時發生什麼? – Programmer
將存儲的值返回給ganeObjects。如果3個ganeObjects A,B和C'進入'存儲它們的值並在'退出'時返回它們。 –
我想我明白....恢復角度和angulardrag回到字典中的每個遊戲對象?如果是這樣,這應該發生在當前GameObject('Collider coll')或**字典中的每個** GameObject? – Programmer