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); }
void Awake() { cameraTrans = transform.GetComponentInChildren <Camera>().transform; characterCollider = GetComponent <CharacterCollider>(); map = (Map)GameObject.FindObjectOfType(typeof(Map)); cursor = (GameObject)GameObject.Instantiate(cursor); }
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); }
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); } }
// 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; }
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); }
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>(); }
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(); } }
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); }
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; }
void Awake() { character = GetComponent <CharacterCollider>(); }
void Awake() { characterCollider = GetComponent <CharacterCollider>(); truePosition = transform.position; }
public void DrawCollision(CharacterCollider collider) { DrawCollisionBox(collider, _characterColliderColor); }
void Awake() { characterCollider = GetComponent<CharacterCollider>(); truePosition = transform.position; }
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 }