你好同学,
被点击的瓶子会派发事件
BottleSelected
之后会根据当前的状态来选择是浮起小球还是落下小球
浮起小球:
可查看BottleSelected的MakeFloat方法
GameModel.Instance.FloatObject = bottleModel;
BallModel ballModel = GameModel.Instance.FloatObject.BallModels.Peek();
//将小球放到瓶子的DropPoint位置
ballModel.BallGo.transform.position = bottleModel.DropPoint.transform.position;
Rigidbody2D rigidbody2D = ballModel.BallGo.GetComponent<Rigidbody2D>();
rigidbody2D.gravityScale = 0;
落下小球请查看BallRelease.cs内的代码
BallRelease.Execute的这一段
if (releaseEvent.BottleModel.CanPush(releaseEvent.BallModel))
{
BallModel bm = GameModel.Instance.FloatObject.BallModels.Pop();
releaseEvent.BottleModel.BallModels.Push(bm);
//根据释放的瓶子的DropPoint来设置小球的位置
releaseEvent.BallModel.BallGo.transform.position =
releaseEvent.BottleModel.DropPoint.transform.position;
rigidBody2D.gravityScale = Constants.BallGravityScale;
GameModel.Instance.FloatObject = null;
if (releaseEvent.BottleModel.IsSameColor() &&
releaseEvent.BottleModel.BallModels.Count == Constants.MaxBallCount)
{
EventDispatcher.Instance.Invoke(Define.Event.BottleComplete);
}
}