我正在使用caurina.transitions.Tweener;使用AS3通过我的3D环境(使用alternativa3D平台创建)从A点到B点来补充3D对象的类。一切都很好,它们按照预期从我们告诉他们去的地方移动。
我想知道是否有办法让物体停止移动(或补间),如果他们试图走过的斜坡太陡(就像现实生活中的一座巨大的山丘或山峰)?
这基本上就是我正在使用的代码:
var playerDistance: Number = Vector3D.distance(
new Vector3D( _escapeeManager.activeEscapee.x,
_escapeeManager.activeEscapee.y,
_escapeeManager.activeEscapee.z ),
intersectData.point );
Tweener.addTween( _escapeeManager.activeEscapee, { x:intersectData.point.x, y:intersectData.point.y, time:(playerDistance/_escapeeManager.activeEscapee.speed), transition:"linear" } );
如果你想在我正在开发的游戏中看到一个例子,可以在这里找到: http://redmenmusic.ca/godsend.html
感谢您的帮助!
答案 0 :(得分:0)
使用Tweener除了表面动画以外的任何东西似乎有点奇怪 - 你可能需要实现一个更复杂的系统来处理物体移动,碰撞检测,斜坡等。
答案 1 :(得分:0)
caurina.transitions.Tweener有一些可以为您的问题派上用场的属性。我不是说Tweener是最好的方式,它会让你想到你想要的地方:)。
官方的Tweener文档网站可在此处找到:http://hosted.zeh.com.br/tweener/docs/en-us/。 “补间参数”部分对您来说很有意思。
所以对于你的问题,我建议这样做: 有一个 onUpdate 事件,它会在Tweener的每次更新时执行。在每次更新时,您都可以检查斜率是否陡峭。 例: Tweener.addTween(myMovieClip,{x:100,time:1,onUpdate:function(){/ *检查这里是否陡峭 - 如果是,你可以删除对象上的Tweener并继续其他功能* /}});
我希望很清楚:) 祝你好运!