public override void OnStart() { base.OnStart(); AcceleratingProjectile p = Resources.Load <GameObject>("Projectiles/" + projectileName).GetComponent <AcceleratingProjectile>(); if (p == null) { accelerating = true; accelerate = p.acceleration.y; } else { accelerating = false; accelerate = 0; } }
public override void MovementSkill() { if (MovementSkillRemainingCooldown > 0) { return; } Vector2 direction = GetHeroToMouseDirection(); AcceleratingProjectile projectile = new AcceleratingProjectile(CurrentMap); projectile.Initialize(); projectile.Load(); projectile.Center = new Point(Center.X + (int)(direction.X * 40), Center.Y + (int)(direction.Y * 40)); projectile.Speed = direction * projectile.StartingSpeed; CurrentMap.AddEntity(projectile); const int force = 700; Vector2 newSpeed = Vector2.Zero; bool needToChangeSpeed = false; if (Speed.X > 0 && -direction.X * force > Speed.X || Speed.X < 0 && -direction.X * force < Speed.X || Speed.X * -direction.X <= 0) { newSpeed = new Vector2(-direction.X * force, Speed.Y); needToChangeSpeed = true; } if (Speed.Y > 0 && -direction.Y * force > Speed.Y || Speed.Y < 0 && -direction.Y * force < Speed.Y || Speed.Y * -direction.Y <= 0) { newSpeed = new Vector2(newSpeed.X, -direction.Y * force); needToChangeSpeed = true; } if (needToChangeSpeed) { Speed = new Vector2(newSpeed.X, Speed.Y); ChangeSpeedSmoothly(newSpeed, 4); } const int shakePower = 5, flickCount = 2, flickDuration = 3; CurrentMap.MapCamera.GenerateShake(shakePower, flickCount, flickDuration); MovementSkillRemainingCooldown = MovementSkillCooldown; }