小球和瓶子的游戏逻辑如何实现

来源:8-4 UIHall的制作

精慕门7500262

2021-07-07

如何控制小球在各个瓶子间移动?

写回答

1回答

王海波

2021-07-09

你好同学,

被点击的瓶子会派发事件

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);
    }
}



0
0

Unity 全流程开发游戏BallSort,助力迈入游戏高薪领域

掌握 Unity 核心技术,助力迈入游戏高薪领域

267 学习 · 39 问题

查看课程