public void Fire(Vector3 target) { rigid.gravityScale = 0; Vector2 diriection = (target - transform.position).normalized; rigid.AddForce(diriection * speed, ForceMode2D.Impulse); projectileType = ProjectileTypeEnum.PROJECTILE; }
/// <summary> /// Creates a weapon, basing on provided arguments. /// </summary> /// <param name="gloveType">Type of the weapon (what is the weapon doing).</param> /// <param name="projectileType">Type of projectiles for the weapon (energy/physical/etc.).</param> /// <param name="parentTransform">Transform of the parent object. Can be null.</param> /// <returns></returns> public IWeapon CreateWeapon(GloveType gloveType, ProjectileTypeEnum projectileType, Transform parentTransform) { switch (gloveType) { case GloveType.Glove: return(CreateToolGlove(projectileType, parentTransform)); } throw new Exception($"Weapon of type {gloveType} with projectiles of type {projectileType} is unknown."); }
/// <summary> /// Erstellt ein Projektil /// </summary> /// <param name="position">Position</param> /// <param name="flightDirection">Flugrichtung</param> /// <param name="projectileType">Art des Projektils</param> /// <param name="hitpoints">Lebenspunkte</param> /// <param name="velocity">maximale Geschwindigkeit</param> /// <param name="damage">Schaden, der anderen zugefügt wird</param> public Projectile(Vector2 position, Vector2 flightDirection, ProjectileTypeEnum projectileType, int hitpoints, Vector2 velocity, int damage) : base(position, velocity, hitpoints, damage) { this.ProjectileType = projectileType; this.FlightDirection = flightDirection; this.FlightDirection.Normalize(); if (Projectile.Created != null) { Projectile.Created(this, EventArgs.Empty); } }
// //Sie können beim Verfassen Ihrer Tests die folgenden zusätzlichen Attribute verwenden: // //Mit ClassInitialize führen Sie Code aus, bevor Sie den ersten Test in der Klasse ausführen. //[ClassInitialize()] //public static void MyClassInitialize(TestContext testContext) //{ //} // //Mit ClassCleanup führen Sie Code aus, nachdem alle Tests in einer Klasse ausgeführt wurden. //[ClassCleanup()] //public static void MyClassCleanup() //{ //} // //Mit TestInitialize können Sie vor jedem einzelnen Test Code ausführen. //[TestInitialize()] //public void MyTestInitialize() //{ //} // //Mit TestCleanup können Sie nach jedem einzelnen Test Code ausführen. //[TestCleanup()] //public void MyTestCleanup() //{ //} // #endregion private Projectile CreateProjectile() { Vector2 position = new Vector2(0.0f, CoordinateConstants.TopBorder * 2.0f - 1.0f); // Position knapp unter der oberen Grenze Vector2 flightDirection = CoordinateConstants.Up; // Bewegungsrichtung ProjectileTypeEnum projectileType = ProjectileTypeEnum.PlayerNormalProjectile; // Projektiltyp int hitpoints = GameItemConstants.PlayerNormalProjectileHitpoints; // Lebenspunkte Vector2 velocity = GameItemConstants.PlayerNormalProjectileVelocity; // Geschwindigkeit int damage = GameItemConstants.PlayerNormalProjectileDamage; // Schaden // Prijektil erzeugen Projectile target = new Projectile(position, flightDirection, projectileType, hitpoints, velocity, damage); return(target); }
public void Launch(Vector3 target) { helper = new GameObject("Bounce Helper"); helper.AddComponent <CircleCollider2D>().radius = circleCollider.radius; helper.layer = LayerMask.NameToLayer("FirstBounce"); helper.transform.SetParent(transform, false); rigid.gravityScale = 1; rigid.AddTorque(-3, ForceMode2D.Impulse); Vector3 velocity = CalculateThrowVelocity(transform.position, target); rigid.AddForce(velocity, ForceMode2D.Impulse); projectileType = ProjectileTypeEnum.BOUNCE; }
/// <summary> /// Changes color of the beam, accordingly to new equipped glove. /// </summary> /// <param name="newSetGlove"></param> public void SwitchColor(ProjectileTypeEnum newSetGlove) { switch (newSetGlove) { case ProjectileTypeEnum.Physical: _beamRenderer.startColor = _beamStartColorPhysic; break; case ProjectileTypeEnum.Energy: _beamRenderer.startColor = _beamStartColorEnergy; break; } _currentSelectedColor = _beamRenderer.startColor; }
/// <summary> /// Creates a tool glove - weapon that is capable of hooking objects of the same projectile type and allows /// for influence of their movement. /// </summary> /// <param name="projectileType">Type of glove (electric/physics).</param> /// <param name="parentTransform">Transform of parent object. Can be null.</param> /// <returns></returns> private IWeapon CreateToolGlove(ProjectileTypeEnum projectileType, Transform parentTransform) { IWeapon glove = null; switch (projectileType) { case ProjectileTypeEnum.Physical: glove = Instantiate(_physicsGlovePrefab, parentTransform).GetComponent <IWeapon>(); break; case ProjectileTypeEnum.Energy: glove = Instantiate(_energyGlovePrefab, parentTransform).GetComponent <IWeapon>(); break; } if (glove == null) { throw new Exception($"Tool glove with projectiles of type {projectileType} is unknown."); } glove.SetStrength(_gloveStrength); return(glove); }
/// <summary> /// Checks if type of object is the same as type of the glove that tried to hook it. /// </summary> /// <param name="projectileType">Type of hooking glove.</param> /// <returns>True if types match, false otherwise.</returns> public override bool ChkGloveType(ProjectileTypeEnum projectileType) { return(projectileType == ObjectType); }
/// <summary> /// Prompts the 3D pointer to change its color, accordingly to new glove equipped by the player. /// </summary> /// <param name="newSetGlove"></param> public void Switch3DPointerColor(ProjectileTypeEnum newSetGlove) { _sceneObjectsPointer.SwitchColor(newSetGlove); }
public abstract bool ChkGloveType(ProjectileTypeEnum projectileType);