private void OnTriggerStay2D(Collider2D collision) { ExpressPackage pack = collision.GetComponent <ExpressPackage> (); if (pack != null && pack.state == Gear.State.Dropped) { FillWithExpressPackage(pack); } }
public void FillWithExpressPackage(ExpressPackage pack) { pack.dropMovement.enabled = false; // 自下而上寻找空点 int row = 0; int column = 0; bool found = false; while (row < fillCountPerColumn) { foreach (var kv in depot) { if (kv.Value[row] == null) { found = true; column = kv.Key; kv.Value[row] = pack; goto Result; } } row++; } Result: if (found) { pack.transform.position = new Vector3(startFillPosition.x + column * expressPackageSize.x, startFillPosition.y + row * expressPackageSize.y); EventKit.Broadcast(GlobalSymbol.EVT_ExpressPackagePlaced, pack.gameObject); CameraShakeManager.Instance.AddShake("camera_shake 2 0 0.1,0.1 10 0.25"); } else { // 满了 } }