// Update is called once per frame void Update() { Vector2 player_pos = FindObjectOfType <BabyCowScript>().transform.position; if (cur_state == CowState.Idle) { Vector2 pos = transform.position; transform.position = new Vector3(pos.x, pos.y - speed * Time.deltaTime, -3); if (Vector2.Distance(player_pos, gameObject.transform.position) < flock_range) { cur_state = CowState.Following; FindObjectOfType <BabyCowScript>().AddScore(1); } } if (cur_state == CowState.Following) { if (Vector2.Distance(player_pos, gameObject.transform.position) < flock_range) { gameObject.transform.rotation = Quaternion.RotateTowards(rgbd.transform.rotation, Quaternion.Euler(0, 0, master_angle), rot_rate); rgbd.transform.Translate(Vector3.up * master_speed); } else { float rot_val = 180 * Mathf.Atan((player_pos.y - rgbd.transform.position.y) / (player_pos.x - rgbd.transform.position.x)) / Mathf.PI; rot_val = player_pos.x - rgbd.transform.position.x < 0 ? rot_val + 90 : rot_val - 90; gameObject.transform.rotation = Quaternion.RotateTowards(rgbd.transform.rotation, Quaternion.Euler(0, 0, rot_val), 5.0f); rgbd.transform.Translate(Vector3.up * master_speed); } } }
// Update is called once per frame void Update() { if (Vector2.Distance(transform.position, target.position) > bufferArea) { transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime); } }
/* * Translates crosshair position based on mouse input. */ private void TranslateCrosshair() { float mouseX = Input.GetAxis("Mouse X"); float mouseY = Input.GetAxis("Mouse Y"); float XPrime = mouseX + currentCursor.transform.position.x; float YPrime = mouseY + currentCursor.transform.position.y; Vector2 newPos = (shortHand) ? new Vector2(XPrime, YPrime) + ((Vector2)centerPivot.transform.position - lastCharPos) : new Vector2(XPrime, YPrime); Vector2 centerPos = new Vector2(centerPivot.transform.position.x, centerPivot.transform.position.y); float radius = Vector2.Distance(newPos, centerPos); angleToPlayer = Mathf.Atan2(newPos.y - centerPos.y, newPos.x - centerPos.x); angleToPlayer = angleToPlayer * Mathf.Rad2Deg; angleToPlayer = (angleToPlayer < 0) ? angleToPlayer + 360 : angleToPlayer; if (shortHand) { Cursor.lockState = CursorLockMode.Locked; if (radius > maxRadius) { Vector2 diff = newPos - centerPos; diff *= maxRadius / radius; newPos = centerPos + diff; } currentCursor.transform.position = newPos; lastCharPos = centerPivot.transform.position; } else { Cursor.lockState = CursorLockMode.Confined; Vector3 temp = Input.mousePosition; currentCursor.transform.position = Camera.main.ScreenToWorldPoint(temp); } }
private void movement() { if (Vector2.Distance(transform.position, target.position) > stopDist) { Chase(); } }
/************** * Behaviours * **************/ void chase() { // Save data had_LOS = true; last_player_pos = player.position; //move toward the player, but not too close! if (Vector2.Distance(transform.position, player.position) >= social_distance) { transform.position = Vector2.MoveTowards(transform.position, player.position, movespeed * Time.deltaTime * TimeManager.Instance.getTimeMultiplier()); } //rotate to look at the player transform.right = player.position - transform.position; //shoot when possible if (shoot_timer <= 0f) { shoot(); shoot_timer = Random.Range(shoot_timer_length_min, shoot_timer_length_max); } else { shoot_timer -= Time.deltaTime * TimeManager.Instance.getTimeMultiplier(); } }
// Update is called once per frame void FixedUpdate() { if (path == null) { return; } if (currentWaypoint >= path.vectorPath.Count) { reachedEndOfPath = true; return; } else { reachedEndOfPath = false; } Vector2 direction = ((Vector2)path.vectorPath[currentWaypoint] - rb.position).normalized; Vector2 force = direction * speed * Time.deltaTime; rb.AddForce(force); //Vector2 directionToWaypoint = path.vectorPath[currentWaypoint] - transform.position; //float distanceDelta = speed * Time.deltaTime; //transform.Translate(directionToWaypoint * distanceDelta); float distance = Vector2.Distance(transform.position, path.vectorPath[currentWaypoint]); if (distance < nextWaypointDistance) { currentWaypoint++; } }
public override void Update() { base.Update(); if (Vector2.Distance(transform.position, player.position) < 10f && canCastSkill) { CastSkill(); } if (!canCastSkill) { skillTimer += Time.deltaTime; if (skillTimer >= skillCoolDown) { canCastSkill = true; skillTimer = 0f; } } if (castingSkill) { base.isHurt = true; castingTimer += Time.deltaTime; if (castingTimer >= castingSkillTime) { castingSkill = false; castingTimer = 0f; base.isHurt = false; } } }
private void Orbit() { x -= +Input.GetAxis("Mouse X") * sensitivity; y -= +Input.GetAxis("Mouse Y") * sensitivity; x = Mathf.Clamp(x, -maxOrbit, maxOrbit); y = Mathf.Clamp(y, -maxOrbit, maxOrbit); Vector2 centerPos = new Vector2(0, 0); Vector2 newPos = new Vector2(x, y); float radius = Vector2.Distance(newPos, centerPos); if (radius > maxRadius) { Vector2 diff = newPos - centerPos; diff *= maxRadius / radius; newPos = centerPos + diff; } playerCamera.m_FollowOffset.x = -newPos.x; playerCamera.m_FollowOffset.y = -newPos.y; }
public void Scale(Vector3 clickInWorldPos, List <ControlPoint> points, List <Vector2> originalPositions) { clickInWorldPos.y = transformPoint.y; var delta = clickInWorldPos - (Vector3)transformPoint; var distance = Vector2.Distance(clickInWorldPos, transformPoint); distance *= scaleSpeed * Mathf.Sign(delta.x); Matrix3x3 scaleMat = Matrix3x3.TranslateMatrix(transformPoint.x, transformPoint.y) * Matrix3x3.ScaleMatrix(1 + distance, 1 + distance) * Matrix3x3.TranslateMatrix(-transformPoint.x, -transformPoint.y); for (var i = 0; i < points.Count; i++) { var point = points[i]; var pos = scaleMat * originalPositions[i]; //point.position = originalPositions[i] + (originalPositions[i] - transformPoint).normalized * (Vector2.Distance(originalPositions[i], transformPoint) * distance); point.position = pos; } onDraw = () => { Draw.Line(transformPoint, clickInWorldPos, .2f, pointColor); }; }
/// <summary> /// Gets the nearby vertex indice of the vertex closest to the point /// </summary> /// <param name="point">the position you are looking for nearby vertices from.</param> /// <param name="searchRadius">the radius you want to search around the point by</param> /// <returns>Returns an integer index on this object's vertex array, or it returns -1 as a null</returns> public int getNearbyVerticeIndex(Vector3 point, float searchRadius, int triangleIndex) { point = transform.InverseTransformPoint(point); int closest = -1; float shortest_distance = searchRadius; Mesh mesh = meshFilter.sharedMesh; Vector3[] vertices = mesh.vertices; int[] triangles = mesh.triangles; Vector3[] verts = { vertices[triangles[triangleIndex * 3 + 0]], vertices[triangles[triangleIndex * 3 + 1]], vertices[triangles[triangleIndex * 3 + 2]] }; int i = triangles[triangleIndex * 3]; foreach (var vert in verts) { float our_distance = Vector2.Distance(vert, point); if (our_distance < shortest_distance) { shortest_distance = our_distance; closest = i; } i++; } return(closest); }
static void SplitCurveInHalf(BezierCurve curve, float tBegin, float tEnd, HashSet <Vector2Int> outHash) { Vector2 beginValue = curve.GetValue(tBegin), endValue = curve.GetValue(tEnd); int endX = Mathf.RoundToInt(endValue.x), endY = Mathf.RoundToInt(endValue.y); int beginX = Mathf.RoundToInt(beginValue.x), beginY = Mathf.RoundToInt(beginValue.y); int dxAbs = Mathf.Abs(endX - beginX), dyAbs = Mathf.Abs(endY - beginY); bool endSplit = dxAbs == 1 && dyAbs == 0 || dyAbs == 1 && dxAbs == 0 || Vector2.Distance(beginValue, endValue) <= 0.25f; if (!endSplit) { float mid = Mathf.Lerp(tBegin, tEnd, 0.5f); SplitCurveInHalf(curve, tBegin, mid, outHash); SplitCurveInHalf(curve, mid, tEnd, outHash); return; } var point = new Vector2Int(endX, endY); outHash.Add(point); }
// Update is called once per frame public virtual void Update() { healthBar.setHealthBar(health); if (Vector2.Distance(transform.position, player.position) < 45f) { canChase = true; } if (isHurt == true) { canChase = false; hurtTimer += Time.deltaTime; } if (hurtTimer >= hurtResetTime) { hurtTimer = 0; isHurt = false; canChase = true; rb.velocity = Vector2.zero; } if (canChase && !PlayerController.instance.isDead) { ChaseFilter(); } if (health <= 0) { Dead(shooter); } if (PlayerController.instance.isDead) { rb.velocity = Vector2.zero; } }
private void Update() { if (Vector2.Distance(shooter.position, transform.position) > 30) { Destroy(gameObject); } }
/// <summary> /// Within every frame, it checks if the game is still running and then calculates where the enemy has to move /// to get to the next way point, when the final way point is reached the enemy will be destroyed. /// </summary> protected new void Update() { base.Update(); if (_gc.gameState == GameManager.GameState.Running) { var dir = Vector3.Scale(new Vector3(1, 0, 1), _target.position - transform.position); transform.Translate(dir.normalized * (speed * Time.deltaTime), Space.World); var position = transform.position; var position2d = new Vector2(position.x, position.z); var targetPosition = _target.transform.position; var target2d = new Vector2(targetPosition.x, targetPosition.z); if (Vector2.Distance(position2d, target2d) <= 0.1f) { if (_waypointIndex >= Waypoints.waypoints.Length) { EndPointReached(); } else { NextWaypoint(); } } } }
private void HandleSnapping() { if (Vector2.Distance(_back.position, _front.position) <= 1f) { Snap(); State = PlayerStates.Snapped; } }
void Update() { if (Vector2.Distance(transform.position, target) <= nearDistance) { OnPlayerReachedTarget(); } //Move(); }
// Function for landing on feet void landingRotation() { float feetDist = Vector2.Distance(landingPoint.position, currentTarget); float generalDist = Vector2.Distance(transform.position, currentTarget); if (feetDist > generalDist * 0.85) { transform.Rotate(0.0f, 0.0f, 50.0f); } }
private bool canSeePlayer() { // check if the enemy is close enough to charge if (Vector2.Distance(transform.position, target.position) <= visibilityDistance) { return(true); } // the player was not detected within either view return(false); }
public void GoTo(Vector2 pos) { if (Vector2.Distance(pos, transform.position) > nearDistance) { isMoving = true; heroAnimator.SetBool("Moving", isMoving); } reachedTarget = false; target = pos; }
public void ChaseFilter() { if (Vector2.Distance(transform.position, player.position) >= maxDistance) { Chase(center, moveSpeed / 2); } else { Chase(player, moveSpeed); } }
void SetNextPositionTarget() { if (Vector2.Distance(_target.transform.position, transform.position) < Sight) { currentPositionTarget = _target.transform.position; } else { currentPositionTarget = new Vector2(Random.Range(transform.position.x - Sight, transform.position.x + Sight), Random.Range(transform.position.y - Sight, transform.position.y + Sight)); } }
private void GetBounds(out float width, out float height, out float offsetX, out float offsetY) { var mainCamera = Camera.main; var z = mainCamera.gameObject.transform.position.z; var topRight = mainCamera.ViewportToWorldPoint(new Vector3(1, 1, -z)); var bottomLeft = mainCamera.ViewportToWorldPoint(new Vector3(0, 0, -z)); width = Vector2.Distance(new Vector2(bottomLeft.x, 0), new Vector2(topRight.x, 0)); height = Vector2.Distance(new Vector2(0, topRight.y), new Vector2(0, bottomLeft.y)); offsetX = bottomLeft.x; offsetY = topRight.y; }
/** * Executes enemy movement */ private void movement() { if (Vector2.Distance(transform.position, target.position) > stopDist) { if (canSeePlayer()) { Chase(); } else { wander(); } } }
void MoveToWaypoint() { var targetPosition = waypoints[waypointIndex].position; var movementThisFrame = waveConfig.GetMoveSpeed() * Time.deltaTime; transform.position = Vector2.MoveTowards(transform.position, targetPosition, movementThisFrame); float distance = Vector2.Distance(targetPosition, transform.position); if (transform.position == targetPosition) { waypointIndex++; } }
//Vérifie si le joueur est dans la ligne de vue du monstre protected bool InlineofSight() { Vector3 playerdirection = (player.transform.position - transform.position).normalized; RaycastHit2D hit = Physics2D.Raycast(transform.position, playerdirection, Vector2.Distance(transform.position, player.transform.position), 256); if (!hit.collider) { return(true); } return(false); }
private IEnumerator MoveJob(Vector2 waypoint) { Vector2 start = transform.position; float dist = Vector2.Distance(start, waypoint); float progress = 0; while (Vector2.Distance(waypoint, transform.position) > float.Epsilon) { transform.position = Vector2.Lerp(start, waypoint, progress); yield return(null); progress += MovementSpeed * Time.deltaTime / dist; } }
void Update() { if (_healthManager.IsDead) { _rb.Sleep(); _rb.velocity = Vector2.zero; _rb.angularVelocity = 0; return; } _spriteRenderer.flipX = _rb.velocity.x < 0; if (_rb.velocity.magnitude > 0.3) { if (_isIdle) { _animator.SetBool("isIdle", false); } _isIdle = false; } else { if (!_isIdle) { _animator.SetBool("isIdle", true); } _isIdle = true; } if (cd <= 0) { if (Vector2.Distance(transform.position, currentPositionTarget) < 1.4) { cd = 1.0f; } else { _rb.AddForce((currentPositionTarget - (Vector2)transform.position) * _speed); } } else { cd = cd - Time.deltaTime; if (cd <= 0) { SetNextPositionTarget(); } } }
// Update is called once per frame void Update() { if (!canMove) { return; } if (Vector2.Distance(transform.position, player.position) > maxDistance) { transform.position = new Vector3(player.position.x - maxDistance, transform.position.y, 0); } transform.position = transform.position + (transform.right * (speed * Time.deltaTime)); }
void Update() { if (Vector2.Distance(transform.position, target.position) >= distance) { transform.position = Vector2.MoveTowards(transform.position, target.position, (speed.value + 2) * Time.deltaTime); } if (Input.GetButtonDown("Fire1")) { if (laser.value) { GameObject bullet = ObjectPooler.Instance.GetPooledObject("Laser Bullet"); if (bullet != null) { bullet.transform.position = transform.position; bullet.SetActive(true); } } else { GameObject bullet = ObjectPooler.Instance.GetPooledObject("Player Bullet"); if (bullet != null) { bullet.transform.position = transform.position; bullet.SetActive(true); } } if (doubleM.value) { GameObject bullet = ObjectPooler.Instance.GetPooledObject("Double Bullet"); if (bullet != null) { bullet.transform.position = transform.position; bullet.SetActive(true); } } if (missile.value) { GameObject bullet = ObjectPooler.Instance.GetPooledObject("Missile Bullet"); if (bullet != null) { bullet.transform.position = transform.position; bullet.SetActive(true); } } } }
public void Update() { transform.position = Vector2.MoveTowards(transform.position, moveSpots[randomSpot].position, speed * Time.deltaTime); if (Vector2.Distance(transform.position, moveSpots[randomSpot].position) < 0.2f) { if (waitTime < -0) { randomSpot = Random.Range(0, moveSpots.Length); waitTime = startWaitTime; } else { waitTime -= Time.deltaTime; } } }