internal virtual IEnumerator AttackCoroutine() { doneAttacking = false; canAttack = false; canDamagePlayer = true; rb.velocity = Vector2.zero; enemy.ResetVelocityAndInput(); //float sign = Mathf.Sign(enemy.input.x); Vector2 originalPosition = transform.position; float x = playerController.transform.position.x; float y = (canAttackVertically) ? playerController.transform.position.y : transform.position.y; Vector2 attackOffset = new Vector2(x, y);// - PLAYER_WIDTH * Vector2.right;//(Vector2)transform.position + (sign * attackDistance * Vector2.right).normalized * attackDistance; Tween myTween = rb.DOMove(attackOffset, attackTime); enemy.audioSource.PlayOneShot(attackClip); yield return(myTween.WaitForCompletion()); canDamagePlayer = false; myTween = rb.DOMove(originalPosition, attackTime / 2f); yield return(myTween.WaitForCompletion()); timeToAttack = timeBetweenAttacks; rb.velocity = Vector2.zero; yield return(new WaitForSeconds(pauseAfterAttackTime)); canAttack = true; doneAttacking = true; }
// Start is called before the first frame update void Start() { if (!targetPosition) { targetPosition = transform.GetChild(0).GetComponentInChildren <Transform>(); //Debug.Log("update target position " + targetPosition); } DOTween.Init(); rigidbody = GetComponent <Rigidbody2D>(); Vector2 originPosition = rigidbody.position; //Vector3 myVector = Vector3.zero; //DOTween.To(() => myVector, x => myVector = x, new Vector3(3, 4, 8), 1); // transform.DOMove(new Vector3(2, 2, 2), 1); if (patrol) { Sequence seq = DOTween.Sequence(); seq.Append(rigidbody.DOMove((Vector2)targetPosition.position, patrolTime)); seq.AppendInterval(waitTime); seq.Append(rigidbody.DOMove(originPosition, patrolTime)); seq.AppendInterval(intervalTime); seq.SetLoops(-1, LoopType.Restart); } }
void OnFlingEnd() { isFalling = true; head.velocity = Vector2.zero; feet.velocity = Vector2.zero; GrabTrigger.ResetGrab(); feetCollider.isTrigger = true; tw = feet.DOMove(head.transform.position, extendTime).SetEase(Ease.OutQuad).OnComplete(OnFollowComplete); }
// Update is called once per frame void FixedUpdate() { if (Input.GetButtonDown("Fire2") && !thrown && !onWayBack) { thrown = true; yoyo.transform.position = hand.position; sr.enabled = true; c.enabled = true; if (Input.GetAxisRaw("Vertical") > 0) { point.position = target2.position; } else if (Input.GetAxisRaw("Vertical") < 0 && !pc.grounded) { point.position = target3.position; } else { point.position = target.position; } rb.DOMove(point.position, .5f); line.enabled = true; } if (line.enabled) { line.SetPosition(0, yoyo.transform.position); line.SetPosition(1, hand.position); } if (thrown && (Vector2.Distance(yoyo.transform.position, point.position) <= .3f)) { onWayBack = true; } if (onWayBack) { rb.DOMove(hand.position, .5f); } if (onWayBack && (Vector2.Distance(yoyo.transform.position, hand.position) <= .3f)) { thrown = false; onWayBack = false; sr.enabled = false; c.enabled = false; line.enabled = false; } }
void Attack(Vector2 heroPos) { Vector2 thisToHero = heroPos - transform.position.ToVec2(); Vector2 move = thisToHero.normalized * firstAttackMove; rigidBody.DOMove(move, firstAttackDuration) .SetRelative() .SetEase(firstAttackEase) .OnComplete(() => { DOVirtual.DelayedCall(firstAttackToSecondJump, () => ReJump(HeroDefiner.CurrentPos)); }) .GetPausable() .AddTo(this); }
public IEnumerator DoShoot(Monster monster) { if (!Player.instance) { yield break; } Transform player = Player.instance.transform; Transform monsterTransform = monster.transform; Vector2 toPlayer = (player.position - monsterTransform.position).normalized; transform.SetPositionAndRotation(monsterTransform.position, Quaternion.LookRotation(Vector3.forward, toPlayer)); Tween myTween = rigidBody.DOMove((Vector2)monsterTransform.position + length * toPlayer, duration); yield return(myTween.WaitForStart()); while (myTween.IsActive()) { if (myTween.ElapsedPercentage() > fadeStart) { Color newColor = sprite.color; newColor.a = Mathf.Lerp(1f, 0f, (myTween.ElapsedPercentage() - fadeStart) / (1 - fadeStart)); sprite.color = newColor; } yield return(null); } //yield return myTween.WaitForCompletion(); Destroy(gameObject); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Pot" && this.gameObject.tag == "Hit") { collision.GetComponent <Pot>().Destroy(); } if (collision.gameObject.CompareTag("Player") || collision.gameObject.CompareTag("Enemy") && collision.isTrigger) { Rigidbody2D hit = collision.GetComponentInParent <Rigidbody2D>(); if (hit != null) { Vector2 difference = (hit.transform.position - transform.position).normalized * thrust; hit.DOMove(difference + hit.position, knockTime); if (collision.gameObject.tag == "Enemy") { collision.GetComponent <Enemy>().Knock(hit, knockTime); hit.GetComponent <Enemy>().currentState = EnemyState.stagger; } if (collision.gameObject.tag == "Player") { collision.GetComponentInParent <PlayerMove>().Knock(knockTime); hit.GetComponentInParent <PlayerMove>().currentState = PlayerState.stagger; } } } }
void Start() { m_rb2d = GetComponent <Rigidbody2D>(); Sequence sequence = DOTween.Sequence(); switch (m_movementType) { case EMovementType.BETWEEN_TRANSFORM: sequence.Append(m_rb2d.DOMove(m_endPosition, m_duration)); sequence.Append(m_rb2d.DOMove(m_startPosition, m_duration)); sequence.SetLoops(-1); sequence.Play(); break; } }
private void OnTriggerEnter2D(Collider2D other) { /* * if (other.gameObject.CompareTag("breakable") && this.gameObject.CompareTag("Player")) * { * other.GetComponent<Pot>().Smash(); * } */ if (other.gameObject.CompareTag(otherTag) && other.isTrigger) { Rigidbody2D hit = other.GetComponentInParent <Rigidbody2D>(); if (hit != null) { Vector3 difference = hit.transform.position - transform.position; difference = difference.normalized * thrust; hit.DOMove(hit.transform.position + difference, knockTime); //hit.AddForce(difference, ForceMode2D.Impulse); if (other.gameObject.CompareTag("enemy") && other.isTrigger) { hit.GetComponent <Enemy>().currentState = EnemyState.stagger; other.GetComponent <Enemy>().Knock(hit, knockTime); } if (other.GetComponentInParent <PlayerMovement>().currentState != PlayerState.stagger) { hit.GetComponent <PlayerMovement>().currentState = PlayerState.stagger; other.GetComponentInParent <PlayerMovement>().Knock(knockTime); } } } }
public override Tween GetTween(UniTween.UniTweenTarget uniTweenTarget) { Rigidbody2D rb = (Rigidbody2D)GetComponent(uniTweenTarget); switch (command) { case Rigidbody2DCommand.Move: return(rb.DOMove(vector2, duration, snapping)); case Rigidbody2DCommand.MoveX: return(rb.DOMoveX(to, duration, snapping)); case Rigidbody2DCommand.MoveY: return(rb.DOMoveY(to, duration, snapping)); case Rigidbody2DCommand.Jump: return(rb.DOJump(vector2, jumpPower, numJumps, duration, snapping)); case Rigidbody2DCommand.Rotate: return(rb.DORotate(to, duration)); default: return(null); } }
private void OnTriggerEnter2D(Collider2D other) { /* * Going to replace this with new damage system * if (other.gameObject.CompareTag(BREAKABLE_TAG) && this.gameObject.CompareTag(PLAYER_TAG)) * { * other.GetComponent<Pots>().Smash(); * } */ if (other.gameObject.CompareTag(otherTag) && other.isTrigger) { Rigidbody2D hit = other.GetComponentInParent <Rigidbody2D>(); if (hit != null) { Vector3 difference = hit.transform.position - transform.position; difference = difference.normalized * thrust; //hit.AddForce(difference, ForceMode2D.Impulse); hit.DOMove(hit.transform.position + difference, knockTime); if (other.gameObject.CompareTag(ENEMY_TAG) && other.isTrigger) { hit.GetComponent <Enemy>().currentState = EnemyState.stagger; other.GetComponent <Enemy>().Knock(hit, knockTime); } if (other.GetComponentInParent <PlayerMovement>().currentState != PlayerState.stagger) { hit.GetComponent <PlayerMovement>().currentState = PlayerState.stagger; other.GetComponentInParent <PlayerMovement>().Knock(knockTime); } } } }
public bool GetInput(int[] commandType) { //walk if (ArrayCompare(commandType, new int[] { 1, 1, 1, 2 })) { Vector2 currentPosition = new Vector2(transform.position.x, transform.position.y); thisRigidbody.DOMove(currentPosition + (Vector2.left * moveDistance), secondsToBeats, false); sprite1Animator.SetBool("Walking", true); sprite2Animator.SetBool("Walking", true); return(true); } //jump else if (ArrayCompare(commandType, new int[] { 3, 3, 1, 2 })) { Vector2 currentPosition = new Vector2(transform.position.x, transform.position.y); thisRigidbody.DOJump(currentPosition + (Vector2.up * jumpHeight), 0.5f, 0, secondsToBeats, false); sprite1Animator.SetBool("Jumping", true); sprite2Animator.SetBool("Jumping", true); return(true); } else { unmatchedCommand.Play(); unmatchedCommandSprite.color = flashColor; return(false); } }
public void Fling() { HoldPosition(false); Vector2 path = launcher.transform.localPosition.normalized * PowerBarMask.transform.localScale.y * maxLaunchDistance; tw = head.DOMove((Vector2)head.transform.position + path, extendTime).SetEase(Ease.OutQuad).OnComplete(OnFlingEnd); }
public void OnGetDisturbed() { myCollider.enabled = false; ChangeSprites(flying); Vector2 direction; if (randomDirectin) { float rX = Random.Range(-1.0f, 1.0f); float rY = Random.Range(-1.0f, 1.0f); direction = new Vector2(rX, rY); } else { direction = specificDireciton.normalized; } direction *= range; direction.x += transform.position.x; direction.y += transform.position.y; myRB.DOMove(direction, flyTime).SetEase(flyingEasing).OnComplete( () => { myCollider.enabled = true; ChangeSprites(standing); } ); }
void Start() { life.Life.Subscribe(lf => { if (lf == life.LifeMax) { return; } if (lf == 0) { canMove = false; speed = Vector2.zero; rigidBody.constraints = RigidbodyConstraints2D.FreezeAll; _State.Value = EState.Dead; return; } rigidBody .DOMove(-EyeDirection.Value.ToVec2() * param.KnockBackDistance, param.StunTime) .SetRelative() .SetEase(Ease.OutQuad) .OnComplete(() => _State.Value = EState.Normal); _State.Value = EState.Damaged; }); _Current.Value = this; }
public override void Ability(Vector2 playerPosition, Vector2 playerFacingDrection, Animator playerAnimator = null, Rigidbody2D playerRigidbody = null) { if (playerRigidbody) { Vector3 dashVector = playerRigidbody.transform.position + (Vector3)playerFacingDrection.normalized * dashForce; playerRigidbody.DOMove(dashVector, duration); } }
public IEnumerator DiveAtTarget() { lastPosition = transform.position; var tarPos = targetPosition.position; var returning = false; //rb.velocity = ExtensionMethods.CalculateTrajectoryWithTime(transform.position, targetPosition.position, projectileTravelTime); rb.DOMove(targetPosition.position, projectileTravelTime); var startTime = Time.time; while (true) { var dist = Vector2.Distance(transform.position, tarPos); if (!returning) { if (dist < 1.5f) { rb.velocity = Vector2.zero; Knockback(); yield return(new WaitForSeconds(aftermathDelay)); //rb.velocity = ExtensionMethods.CalculateTrajectoryWithTime(transform.position, lastPosition, projectileTravelTime * 0.5f); rb.DOMove(lastPosition, projectileTravelTime * 0.5f); tarPos = lastPosition; returning = true; } } else { if (dist < 4f) { rb.velocity = Vector2.zero; yield break; } } if (Time.time > startTime + 2f) { rb.velocity = Vector2.zero; yield break; } yield return(new WaitForEndOfFrame()); } }
public IEnumerator Dash(float duration) { Vector3 dashVector = rb.transform.position + (Vector3)input * dashForce; rb.DOMove(dashVector, duration); Physics2D.IgnoreLayerCollision(10, 11, isDashing = true); yield return(new WaitForSeconds(duration)); Physics2D.IgnoreLayerCollision(10, 11, isDashing = false); }
public override void Ability(Vector2 monsterPosition, Vector2 monsterFacingDirection, Vector3 mousePosition, Vector3 attackDirection, Animator monsterAnimator = null, Rigidbody2D monsterRigidBody = null) { if (monsterRigidBody) { Vector3 dashVector = monsterRigidBody.transform.position + (Vector3)monsterFacingDirection.normalized * dashForce; monsterRigidBody.DOMove(dashVector, duration); } }
IEnumerator Tween(Vector2 direction) { isKnockingback = true; Tween tween = rigidBody.DOMove((Vector2)transform.position + force * direction.normalized, duration); yield return(tween.WaitForCompletion()); isKnockingback = false; }
public void AttackDash(float thrust, float time) { Rigidbody2D enemyRb = GetComponent <Rigidbody2D>(); if (enemyRb != null) { Vector3 difference = transform.position - other.transform.position; difference = difference.normalized * thrust; enemyRb.DOMove(enemyRb.transform.position - difference, time); } }
public void KnockbackActive(float thrust, float time) { Rigidbody2D enemyRb = GetComponent <Rigidbody2D>(); if (enemyRb != null) { Vector3 difference = transform.position - player.transform.position; difference = difference.normalized * thrust; enemyRb.DOMove(enemyRb.transform.position + difference, time); } }
protected override void Ability( Vector2 position, Vector2 facingDir, Animator animator = null, Rigidbody2D rigidbody = null ) { if (rigidbody) { Vector3 temp = (Vector3)facingDir.normalized * dashForse; Vector3 dashVector = rigidbody.transform.position + temp; rigidbody.DOMove(dashVector, duration); } }
public virtual void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag(attackData.damageTag) && other.isTrigger) { Rigidbody2D hitObject = other.GetComponentInParent <Rigidbody2D>(); if (hitObject != null) { hitObject.DOMove((Vector3)hitObject.transform.position + attackData.direction * attackData.knockForce, attackData.knockDuration); other.GetComponent <Hurtbox>().TakeDamage(attackData); } } }
public void Hit(int Damage,string HitName,float nuckBackDistance,Vector3 pos=default(Vector3),bulletType type=bulletType.common) //공격받을때 공격한사람 이름도 받음 { if (passive.padding > 0) nuckBackDistance = 0; if (!isSuper&&pv.IsMine && !isDead && !SUPERRRRRRR) { switch (type) { case bulletType.snow: break; case bulletType.mushroom: break; case bulletType.electric: pos=Vector3.zero; canMove = false; rb.velocity=Vector2.zero; rb.DOMove(transform.position, nuckBackTime*2).SetEase(nuckBackEase).OnComplete(()=> { if(!isDead) canMove = true; }); break; } hitSound(); if (pos != Vector3.zero&& nuckBackDistance!=0) { Vector3 dir = (transform.position - pos).normalized; canMove = false; rb.velocity=Vector2.zero; rb.DOMove(transform.position+dir * nuckBackDistance, nuckBackTime).SetEase(nuckBackEase).OnComplete(()=> { if(!isDead) canMove = true; }); } if (PhotonNetwork.OfflineMode) flashWhiteRPC(); else pv.RPC("flashWhiteRPC",RpcTarget.All); isFight(); if(statMgr.Hit(Damage)) Die(HitName); } }
private void MoveTo(Vector3 newDodgePos, float speed) { rb.velocity = Vector2.zero; rb.angularVelocity = 0.0f; transform.rotation = new Quaternion(0, 0, 0, 0); if (playerMoveTween != null) { playerMoveTween.Kill(); } playerMoveTween = rb.DOMove(newDodgePos, speed).SetEase(Ease.InOutQuad); }
void FixedUpdate() { if (Input.GetMouseButtonUp(0) && !isDead) { var pointToMoveTo = Camera.main.ScreenToWorldPoint(Input.mousePosition); pointToMoveTo.z = gameObject.transform.position.z; var headingVector = (pointToMoveTo - transform.position).normalized; var distance = Vector2.Distance(transform.localPosition, pointToMoveTo) / inverseSpeed; distance = distance > 3 ? distance : 1f; body.DOMove(pointToMoveTo, distance * 1f); } }
// public float damage; /*private void OnTriggerEnter2D(Collider2D other) * { * * if (other.gameObject.CompareTag(otherTag) && other.isTrigger) * { * Rigidbody2D hit = other.GetComponentInParent<Rigidbody2D>(); * if (hit != null) * { * Vector3 difference = hit.transform.position - transform.position; * difference = difference.normalized * thrust; * hit.DOMove(hit.transform.position + difference, knockTime); * //hit.AddForce(difference, ForceMode2D.Impulse); * * if (other.gameObject.CompareTag("enemy") && other.isTrigger) * { * hit.GetComponent<Enemy>().currentState = EnemyState.stagger; * other.GetComponent<Enemy>().Knock(hit, knockTime); * * } * * if(other.gameObject.CompareTag("Player")) * { * if(other.GetComponentInParent<PlayerMovement>().currentState != PlayerState.stagger) * { * hit.GetComponent<PlayerMovement>().currentState = PlayerState.stagger; * other.GetComponentInParent<PlayerMovement>().Knock(knockTime); * } * } * * * } * * } * }*/ public void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.CompareTag(otherTag) && other.isTrigger) { Rigidbody2D temp = other.GetComponentInParent <Rigidbody2D>(); if (temp) { Vector2 direction = other.transform.position - transform.position; temp.DOMove((Vector2)other.transform.position + (direction.normalized * thrust), knockTime); } } }
void FixedUpdate() { if (CharManager.Instance.MainChar.Hp <= 0) { animator.Play("Dead"); return; } if (Input.GetMouseButtonDown(0) && CanBite) { AttackFSM.SendEvent("Bite"); BiteTween = rb.DOMove(FollowPoint.position, 0.5f).OnPlay(BiteStart).OnComplete(BiteEnd).SetEase(Ease.OutCubic); MusicSystem.Instance.PlaySound(eSound.ZonbieHit); } if (!biting) { rb.MovePosition(rb.position + MoveVelocity * Time.fixedDeltaTime); if (MoveVelocity == Vector2.zero) { animator.Play("Idle" + LastFacing.ToString()); } else { animator.Play("Walk" + LastFacing.ToString()); } PlayerFacing(); } else { animator.Play("Attack" + LastFacing.ToString()); PlayerFacing(FollowPoint); } if (Input.GetKeyDown(KeyCode.L)) { transform.position += new Vector3(1, 0, 0); } if (Input.GetKeyDown(KeyCode.J)) { transform.position += new Vector3(-1, 0, 0); } if (Input.GetKeyDown(KeyCode.I)) { transform.position += new Vector3(0, 1, 0); } if (Input.GetKeyDown(KeyCode.K)) { transform.position += new Vector3(0, -1, 0); } }
private void DoubleClick() { if (Input.GetButtonDown("Fire1")) { if ((Time.time - lastClickTime < catchTime) && !dash && IsAir) { //dash Vector3 _dir = GameManager.instance.mainCamera.ScreenToWorldPoint(Input.mousePosition) - transform.position; float angle = Mathf.Atan2(_dir.y, _dir.x) * Mathf.Rad2Deg; dashDir.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); Vector3 vec = dashDir.transform.eulerAngles; vec.z = Mathf.Round(vec.z / 90) * 90; dashDir.transform.eulerAngles = vec; dash = true; rigid.DOMove(transform.position + dashDir.transform.right * 3, 0.5f).SetEase(Ease.InOutCubic).OnComplete(() => { dash = false; }); audio.clip = dashClip; audio.Play(); Invoke("DashCancel", 0.5f); if (vec.z == 180) { SagAnim(); } if (vec.z == 360) { SolAnim(); } if (vec.z == 90) { YukariAnim(); } if (vec.z == 270) { AsagiAnim(); } /* * Sequence mySequence = DOTween.Sequence(); * mySequence.Append(rigid.DOMove(transform.position + dashDir.transform.right * 3, 1).SetEase(Ease.InOutCubic)) * .Append(transform.DOScale(new Vector3(1.3f, 1, 1),1)) * .PrependInterval(1) * .Insert(0, transform.DOScale(new Vector3(1, 1, 1), mySequence.Duration())); */ } lastClickTime = Time.time; } }