WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game T... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十七)远距离单体攻击与单体魔法

 2010-09-30 21:09:12 来源:WEB开发网   
核心提示: 这把飞箭来在实际中的旋转可以参考第40节中的极光魔法处理,但同时又有些许的不同:极光魔法是不动的,C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十七)远距离单体攻击与单体魔法(2),当播放完所有帧后即消失;而飞箭是运动的,从主角的手中飞出,创建对象并

这把飞箭来在实际中的旋转可以参考第40节中的极光魔法处理,但同时又有些许的不同:极光魔法是不动的,当播放完所有帧后即消失;而飞箭是运动的,从主角的手中飞出,消失于敌人中心。此时,我选择通过类型为DecorationTypes.Loop的QXDecoration创建飞箭实体,当精灵远距离攻击时,创建对象并进行相应旋转,最后为其添加一个Storyboard飞行动画,并注册storyboard.Completed事件当动画播放完后(即到达敌人中心时)才清除掉该对象,关键代码如下:

//假如是远距离攻击,则射放出相应的对象
if (LongDistanceAttack) {
    QXDecoration ammunition = new QXDecoration() {
    Code = 7,
    EndFrame = 4,
    BodyWidth = 80,
    BodyHeight = 29,
    CenterX = 40,
    CenterY = 15,
    Coordinate = new Point(this.Coordinate.X, this.Coordinate.Y - 40),
    DecorationType = DecorationTypes.Loop,
};
//旋转
    ammunition.RenderTransform = new RotateTransform() {
        CenterX = ammunition.CenterX,
        CenterY = ammunition.CenterY,
        Angle = Super.GetAngle(enemy.Coordinate.Y - this.Coordinate.Y, enemy.Coordinate.X - this.Coordinate.X)
};
    this.ParentCanvas.Children.Add(ammunition);
    //向目标移动,当到达后消失
    Super.MoveToTarget(ammunition, ammunition.Coordinate, new Point(enemy.Coordinate.X, enemy.Coordinate.Y - ammunition.CenterY), 1, 1, 1);
}

上一页  1 2 3 4 5  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接