为什么我想做的是在玩家点击一个节点后将节点移动到底部。每个节点都应该在前一个节点的右侧。
如果播放器点击的速度不是太快,这可以正常工作。但是当玩家快速点击节点时(在前一个完成移动之前),节点会重叠,所以我保留了所有待处理节点的列表并将该距离添加到最后一个位置,这增加了大约 1 个空间的间距。 .
CCNode node = sender as CCNode;
node.RemoveFromParent();
var pos = holder.GetNextAvailablePosition(); // Finds the position of the furthest right node.
holder.AddChild(node);
var time = .5f;
var scaleBy = .5f;
var nodeSize = 180f;
pos += new CCPoint(pendingNodes.Count * (nodeSize * scaleBy), 0);
var move = new CCMoveTo(time, pos);
var scale = new CCScaleTo(time, scaleBy);
pendingNodes.Push(node);
await node.RunActionAsync(new CCSequence(move, scale, new CCCallFunc(() =>
{
pendingNodes.Pop();
})));
我需要弄清楚的另一件事是如何防止节点在重新设置父节点时改变位置。我重新设置节点以更改它的 Z 顺序。