基本要点:
1.鱼最基本的动画:帧动画
帧动画在Unity里面可以选择用animation制作,也可以考虑直接拖拽素材到场景使其自动生成。
2.鱼游动的方式:匀速和变速
匀速:可选择使用Unity自带的Vector3.MoveTowards(pos,new pos,speed)
变速:考虑使用插值运算
gameObject.transform.localPosition = new Vector3(Mathf.Lerp(gameObject.transform.localPosition.x, 5, step), Mathf.Lerp(gameObject.transform.localPosition.y, 5, step), Mathf.Lerp(gameObject.transform.localPosition.z, 0, step));
3.鱼游动的过程:从起点到终点,不可能都是直线前进,必须要有弯曲的前进路线。针对此情况,客户端可以有很多种方式来实现。如:
- 用ITween来设置Point,然后让鱼随着Point前进
- 根据起点和终点,获取圆弧,利用角度和半径来计算鱼的前进路线
- 根据起点和终点以及二者之间的点通过贝塞尔曲线来获取前进的路线
认识贝塞尔曲线:http://www.html-js.com/article/1628
一位大神使用贝塞尔写的游动的路线:http://blog.csdn.net/i646372587/article/details/46852835
以上是关于客户端实现鱼游动路线的思路,那么问题来了,服务器应该需要做一些怎么样的处理?
- 服务器无法实现客户端这种复杂的图形化式的东东
- 在游戏过程中,服务器必须随时知道某一条鱼究竟在哪个位置
- 服务器能给客户端提供的只是关于某一条鱼的起点和终点
SO,接下来解决思路是:
写一个算法来生成一些随机点。。。当服务器给出起点和终点,服务器和客户端同时计算生成的点,鱼通过客户端生成的点通过贝塞尔进行运动,服务器可设定多少时间验证当前鱼儿所在点和自己计算点的差别,当在可接受范围内,无视;当偏值过大,则鱼儿必须运动到服务器指定的点。
所以,重点是这个算法啊,算法啊。算法啊!!!!!!