Ejemplo n.º 1
0
    public float DistanceToTarget()
    {
///<<< BEGIN WRITING YOUR CODE DistanceToTarget
        var target = GetTargetEntity();
        var self   = GetOwner();

        if (null == target)
        {
            return(float.MaxValue);
        }

        return(ExtensionUnityVector3.DistanceXZ(self.position.Value, target.position.Value));
        ///<<< END WRITING YOUR CODE
    }
Ejemplo n.º 2
0
    public uint TryFindTarget()
    {
///<<< BEGIN WRITING YOUR CODE TryFindTarget
        var        entities = Contexts.sharedInstance.game.GetGroup(GameMatcher.AllOf(GameMatcher.Position, GameMatcher.Camp, GameMatcher.Id)).GetEntities();
        GameEntity self     = GetOwner();

        foreach (var entity in entities)
        {
            if (entity.camp.Value != self.camp.Value && ExtensionUnityVector3.DistanceXZ(self.position.Value, entity.position.Value) < 10)
            {
                return(entity.id.value);
            }
        }
        return(0);
///<<< END WRITING YOUR CODE
    }
        protected override ExecResult ExecCommand(IInstance instance, long delta)
        {
            GameEntity obj = instance.Target as GameEntity;

            if (null == obj)
            {
                return(ExecResult.Finished);
            }

            List <uint> findedTargets = new List <uint>();


            Vector3 center = obj.position.Value + Quaternion.Euler(0, Mathf.Rad2Deg * obj.rotation.Value, 0) * m_Offset;

            var entities = Contexts.sharedInstance.game.GetGroup(GameMatcher.Position);

            foreach (var entity in entities)
            {
                if (entity == obj)
                {
                    continue;
                }
                if (entity.hasCamp && obj.hasCamp && entity.camp.Value == obj.camp.Value)
                {
                    continue;
                }

                if (entity.hasDead)
                {
                    continue;
                }

                if (ExtensionUnityVector3.DistanceXZ(center, entity.position.Value) < m_Radius)
                {
                    findedTargets.Add(entity.id.value);
                }
            }

            instance.AddVariable(m_ObjIdVarName, findedTargets);

            return(ExecResult.Finished);
        }
 private bool InCircle(Vector3 point, float range, PositionComponent position)
 {
     return(ExtensionUnityVector3.DistanceXZ(point, position.Value) < range);
 }