bool CheckHitForCell(RaycastHit hit)
    {
        bool          bHitCell      = false;
        CombatantCell hitCombatCell = hit.transform.GetComponentInChildren <CombatantCell>();

        if (hitCombatCell != null)
        {
            if (hitCombatCell.GetTeamID() != teamID)
            {
                if (myArsenal != null)
                {
                    myArsenal.AttackColliderHit(hit.transform);
                    SetEnabled(false);
                    bHitCell = true;
                }
            }
        }
        CharacterCollider hitCharacter = hit.transform.GetComponent <CharacterCollider>();

        if (!hitCharacter)
        {
            hitCharacter = hit.transform.GetComponentInChildren <CharacterCollider>();
        }
        if (hitCharacter != null)
        {
            hitCharacter.TakeHit(damage);
            myArsenal.AttackColliderHit(hit.transform);
            SetEnabled(false);
            bHitCell = true;
        }
        return(bHitCell);
    }
Exemple #2
0
 void Awake()
 {
     cameraTrans       = transform.GetComponentInChildren <Camera>().transform;
     characterCollider = GetComponent <CharacterCollider>();
     map    = (Map)GameObject.FindObjectOfType(typeof(Map));
     cursor = (GameObject)GameObject.Instantiate(cursor);
 }
Exemple #3
0
    public static Contact?GetContactBlockCharacter(Vector3 blockPos, Vector3 pos, CharacterCollider collider)
    {
        Contact contactA = GetClosestPoint(blockPos, pos + collider.bottom);
        Contact contactB = GetClosestPoint(blockPos, pos + collider.top);
        Contact contactC = GetClosestPoint(blockPos, pos + collider.middle);
        Contact contact  = contactA;

        if (contactB.sqrDistance < contact.sqrDistance)
        {
            contact = contactB;
        }
        if (contactC.sqrDistance < contact.sqrDistance)
        {
            contact = contactC;
        }

        if (contact.sqrDistance > collider.radius * collider.radius)
        {
            return(null);
        }

        Vector3 dir          = contact.delta.normalized * collider.radius;
        Vector3 capsulePoint = contact.b + dir;

        contact.b = capsulePoint;
        return(contact);
    }
Exemple #4
0
 private void DrawSelectedCollisionBoxes()
 {
     if (selectedMode == SELECTEDMODE.NONE)
     {
         return;
     }
     else if (selectedMode == SELECTEDMODE.HIT_ROOT)
     {
         foreach (SimpleRectNode node in collisionFrameData.HitBoxKeyFrameData[selectedKeyFrame][selectedRootIndex].Children)
         {
             DrawSelectedCollisionBox(node);
         }
     }
     else if (selectedMode == SELECTEDMODE.HURT_ROOT)
     {
         foreach (SimpleRectNode node in collisionFrameData.HurtBoxKeyFrameData[selectedKeyFrame][selectedRootIndex].Children)
         {
             DrawSelectedCollisionBox(node);
         }
     }
     else if (selectedMode == SELECTEDMODE.HIT_BOX)
     {
         DrawSelectedCollisionBox(collisionFrameData.HitBoxKeyFrameData[selectedKeyFrame][selectedRootIndex].Children[selectedIndex]);
     }
     else if (selectedMode == SELECTEDMODE.HURT_BOX)
     {
         DrawSelectedCollisionBox(collisionFrameData.HurtBoxKeyFrameData[selectedKeyFrame][selectedRootIndex].Children[selectedIndex]);
     }
     else if (selectedMode == SELECTEDMODE.CHAR_COLLIDER)
     {
         CharacterCollider collider = collisionFrameData.CharacterColliderFrameData[selectedKeyFrame];
         SimpleRect        rect     = collider.WithOffset(OriginPoint);
         ssr.DrawCharacterCollider(collider, OriginPoint, Color.Yellow);
     }
 }
Exemple #5
0
 // Use this for initialization
 void Awake()
 {
     character  = GetComponent <CharacterCollider>();
     motor      = GetComponent <CharacterMotor>();
     waterMotor = GetComponent <CharacterMotorSwimming>();
     map        = (Map)GameObject.FindObjectOfType(typeof(Map));
 }
 public override void OnCharacterDied(FDamageData DamageData)
 {
     base.OnCharacterDied(DamageData);
     CharacterCollider.enabled = true;
     CharacterCollider.UpdateColliderBounds(false);
     CharacterCollider.UpdateColliderBounds(true);
     Physics2D.GravityScale = 1f;
 }
Exemple #7
0
 void Awake()
 {
     cameraTrans       = Camera.main.transform;
     characterCollider = GetComponent <CharacterCollider>();
     map           = (Map)GameObject.FindObjectOfType(typeof(Map));
     cursor        = (GameObject)GameObject.Instantiate(cursor);
     spreadingList = new ArrayList();
     selectedBlock = Map.Instance.GetBlockSet().GetBlock(0);
 }
 void Awake()
 {
     playerInfo          = new PlayerInfo(gameObject.name, 0);
     aIMovement          = GetComponent <AIMovement>();
     characterAnimation  = GetComponent <CharacterAnimation>();
     characterController = GetComponent <CharacterController>();
     characterCollider   = GetComponent <CharacterCollider>();
     aIController        = GetComponent <AIController>();
 }
        public void DrawCharacterCollider(CharacterCollider characterCollider, Point origin, Color?color)
        {
            DrawCollisionBox(characterCollider.WithOffset(origin), color ?? _characterColliderColor);

            Point colliderOrigin       = characterCollider.GetOrigin() + origin;
            Point colliderOriginTop    = colliderOrigin - new Point(0, _characterColliderLength);
            Point colliderOriginBottom = colliderOrigin + new Point(0, _characterColliderLength);

            DrawLine(colliderOriginBottom, colliderOriginTop, color ?? _characterColliderColor);
        }
Exemple #10
0
    void Start()
    {
        _collider     = new CharacterCollider(GetComponentInChildren <Collider2D>(), groundLayer);
        _stateMachine = new CharacterStateMachine(this);
        _input        = new KeyboardCharacterInput();

        _animator       = GetComponentInChildren <Animator>();
        _spriteRenderer = GetComponentInChildren <SpriteRenderer>();

        _gravity      = (2 * jumpHeight) / Mathf.Pow(timeToApex, 2);
        _jumpVelocity = Mathf.Sqrt(2 * _gravity * jumpHeight);

        _rigidbody = new CharacterRigidbody(_gravity, transform, _collider);
    }
 public static void Collision(Map map, CharacterCollider collider)
 {
     for (int i = 0; i < 3; i++)
     {
         Contact?_contact = GetClosestContact(map, collider);
         if (!_contact.HasValue)
         {
             break;
         }
         Contact contact = _contact.Value;
         collider.transform.position += contact.delta;
         collider.OnCollision(contact.b, contact.delta.normalized);
     }
 }
    private void Awake()
    {
        // Caches the character's components
        this.characterAnimator = (CharacterAnimator)GetComponent <CharacterAnimator>();
        this.characterStats    = (CharacterStats)GetComponent <CharacterStats>();
        this.characterMovement = (CharacterMovement)GetComponent <CharacterMovement>();
        this.characterForces   = (CharacterForces)GetComponent <CharacterForces>();
        this.characterControl  = (CharacterControl)GetComponent <CharacterControl>();
        this.characterCollider = (CharacterCollider)GetComponent <CharacterCollider>();
        this.characterAI       = (CharacterAI)GetComponent <CharacterAI>();
        this.characterAnchor   = (CharacterAnchor)GetComponent <CharacterAnchor>();
        this.soundManager      = GetComponent <SoundManager>();

        // Cache the default MonoBehaviour components
        transform = GetComponent <Transform>();
    }
Exemple #13
0
        private void BtnSelectCollider_Click(object sender, EventArgs e)
        {
            int currentKeyframe = animScrubber.Value;

            if (renderPreview.collisionFrameData.CharacterColliderFrameData.ContainsKey(currentKeyframe))
            {
                renderPreview.SelectCollider(currentKeyframe);
                CharacterCollider collider = renderPreview.collisionFrameData.CharacterColliderFrameData[currentKeyframe];
                DisableBoxEvents();
                numericTop.Value    = collider.Top();
                numericLeft.Value   = collider.Left();
                numericBottom.Value = collider.Bottom();
                numericRight.Value  = collider.Right();
                EnableBoxEvents();
                EnableBoxControls();

                DisableCollisionCopyControls();
            }
        }
Exemple #14
0
    void Start()
    {
        m_characterAnim     = new CharacterAnim(gameObject);
        m_characterCollider = gameObject.GetComponent <CharacterCollider>();
        GameObject bat = CommonFunc.GetChild(gameObject, "Bat");

        m_batCollider      = CommonFunc.AddSingleComponent <CharacterCollider>(bat);
        m_characterControl = gameObject.GetComponentInChildren <CharacterControl>();
        if (m_characterControl != null)
        {
            m_characterControl.SwitchState      = Switch;
            m_characterControl.MoveEntityAction = SetMovePosition;
            m_characterControl.SetMoveEntity(gameObject);
        }

        if (m_characterAnim != null)
        {
            m_characterAnim.PlayAnim(EEntityState.Idle);
        }

        m_startPosition = transform.position;
    }
    private static Contact?GetClosestContact(Map map, CharacterCollider collider)
    {
        Vector3 pos = collider.transform.position;
        int     x1  = Mathf.FloorToInt(pos.x - collider.radius);
        int     y1  = Mathf.FloorToInt(pos.y);
        int     z1  = Mathf.FloorToInt(pos.z - collider.radius);

        int x2 = Mathf.CeilToInt(pos.x + collider.radius);
        int y2 = Mathf.CeilToInt(pos.y + collider.height);
        int z2 = Mathf.CeilToInt(pos.z + collider.radius);

        Contact?contact = null;

        for (int x = x1; x <= x2; x++)
        {
            for (int y = y1; y <= y2; y++)
            {
                for (int z = z1; z <= z2; z++)
                {
                    BlockData block = map.GetBlock(x, y, z);
                    if (block.IsSolid())
                    {
                        Contact?_newContact = BlockCharacterCollision.GetContactBlockCharacter(new Vector3i(x, y, z), pos, collider);
                        if (_newContact.HasValue && _newContact.Value.delta.magnitude > float.Epsilon)
                        {
                            Contact newContact = _newContact.Value;
                            if (!contact.HasValue || newContact.sqrDistance > contact.Value.sqrDistance)
                            {
                                contact = newContact;
                            }
                        }
                    }
                }
            }
        }

        return(contact);
    }
Exemple #16
0
        public void LoadTexture(string filePath)
        {
            FileStream stream = new FileStream(filePath, FileMode.Open);

            textures.Add(Texture2D.FromStream(Editor.graphics, stream));
            keyFrameLengths.Add(3);
            Texture2D tex = textures[textures.Count - 1];

            //TODO: add some logic for root motion code
            if (textures.Count == 1)
            {
                collisionFrameData.CharacterColliderFrameData.Add(
                    textures.Count - 1, new CharacterCollider(new Point(), new Point(tex.Width, tex.Height)));
            }
            else
            {
                CharacterCollider previous = collisionFrameData.CharacterColliderFrameData[textures.Count - 2];
                CharacterCollider toAdd    = new CharacterCollider(previous);
                collisionFrameData.CharacterColliderFrameData.Add(
                    textures.Count - 1, toAdd);
            }

            InitAnimator();
        }
 public CharacterRigidbody(float gravity, Transform transform, CharacterCollider collider)
 {
     _gravity   = gravity;
     _transform = transform;
     _collider  = collider;
 }
Exemple #18
0
 void Awake()
 {
     character = GetComponent <CharacterCollider>();
 }
Exemple #19
0
 void Awake()
 {
     characterCollider = GetComponent <CharacterCollider>();
     truePosition      = transform.position;
 }
 public void DrawCollision(CharacterCollider collider)
 {
     DrawCollisionBox(collider, _characterColliderColor);
 }
 void Awake()
 {
     characterCollider = GetComponent<CharacterCollider>();
     truePosition = transform.position;
 }
Exemple #22
0
 void Start()
 {
     characterCollider = GetComponent <CharacterCollider> ();
     rigid             = GetComponent <Rigidbody2D> ();
 }
 /// <summary>
 /// Sets the character to a position. You can set whether or not the position checks for sweep position
 /// </summary>
 /// <param name="NewPosition"></param>
 /// <param name="bIgnoreSweep"></param>
 public void SetCharacterAtPosition(Vector3 NewPosition, bool bIgnoreSweep = true)
 {
     this.transform.position = NewPosition;
     CharacterCollider.UpdateColliderBounds(bIgnoreSweep);//this is to avoid
 }