public SteeringData getCollideAvoid() { Vector3 ahead = this.transform.position + _currentVelocity.normalized * _max_See_Ahead * 0.5f; Circle _ClosestObsCirle = findMostThreateningObstacle(); SteeringData _SteeringOut = new SteeringData(); //lengkapi .... yang dibawah ini if (_ClosestObsCirle != null) { _SteeringOut._linear = ahead - _ClosestObsCirle._center; if (_SteeringOut._linear.magnitude > _max_Avoid_Force) { _SteeringOut._linear.Normalize(); _SteeringOut._linear *= _max_Avoid_Force; } } else { _SteeringOut._linear = Vector3.zero; } Debug.Log("col:" + _SteeringOut._linear.magnitude); return(_SteeringOut); }
SteeringData getSteering() { float targetSpeed; Vector3 targetVelocity; SteeringData steering = new SteeringData(); steering._linear = target.position - transform.position; float distance = steering._linear.magnitude; if (distance > slowRadius) { targetSpeed = maxAcc; } else if (distance <= targetRadius) { targetSpeed = 0; } else { targetSpeed = maxSpeed * distance / slowRadius; } targetVelocity = steering._linear.normalized * targetSpeed; steering._linear = targetVelocity - velocity; if (steering._linear.magnitude > maxAcc) { steering._linear.Normalize(); steering._linear *= maxAcc; } return(steering); }
public void Execute(int index) { SteeringData steering = Steerings[index]; MovementData movement = Movements[index]; float3 position = Positions[index].Value; float3 steeringVelocity = steering.Velocity; float distance = math.distance(movement.TargetPos, position); ref float3 velocity = ref movement.Velocity;
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = transform.position - _target.position; //#direction _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxAcceleration; return(_SteeringOut); }
SteeringData getSteering() { SteeringData steering = new SteeringData(); steering._linear = target.position - transform.position; steering._linear.Normalize(); steering._linear *= maxAcc; steering._angular = Vector3.zero; return(steering); }
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = _target - transform.position; _SteeringOut._linear = _SteeringOut._linear.normalized; _SteeringOut._linear *= _maxAcceleration; _SteeringOut._angular = Vector3.zero; return(_SteeringOut); }
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = _target.position - transform.position; //#direction _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxAcceleration; // this.transform.eulerAngles = getNewOrientation(this.transform.eulerAngles, _KinematicOut._velocity); //rotation menggunakan euler angle _SteeringOut._angular = Vector3.zero; //orientasi belum kita hitung return(_SteeringOut); }
// Update is called once per frame void Update() { _velocity = _velocity + getSteering()._linear *Time.deltaTime; // Vt = Vo +a.t if (_velocity.magnitude > _maxSpeed) { _velocity = _velocity.normalized * _maxSpeed; } this.transform.position = transform.position + _velocity * Time.deltaTime; this.transform.eulerAngles = SteeringData.getNewOrientation(transform.eulerAngles, _velocity); }
// Update is called once per frame void Update() { //lengkapi Update _steeringAll = getSteering()._linear + getCollideAvoid()._linear; // Vt = Vo +a.t _velocity += _steeringAll * Time.deltaTime; if (_velocity.magnitude > _maxSpeed) { _velocity = _velocity.normalized * _maxSpeed; } this.transform.position += _velocity * Time.deltaTime; this.transform.eulerAngles = SteeringData.getNewOrientation(transform.eulerAngles, _velocity); }
public void Execute(int index) { SteeringData steering = Steerings[index]; SteeringSharedData steeringShared = SharedSteering; MovementData movement = Movements[index]; float3 position = Positions[index].Value; steering.Velocity = movement.TargetPos - position; if (math.lengthsq(steering.Velocity) > steeringShared.MaxAccelerationSqr) { steering.Velocity = math.normalizesafe(steering.Velocity) * steeringShared.MaxAcceleration; } steering.Velocity.y = 0.0f; Steerings[index] = steering; }
// Update is called once per frame void Update() { _velocity = _velocity + getSteering()._linear *Time.deltaTime; // Vt = Vo +a.t if (_velocity.magnitude > _maxSpeed) { _velocity = _velocity.normalized * _maxSpeed; } this.transform.position = transform.position + _velocity * Time.deltaTime; this.transform.eulerAngles = SteeringData.getNewOrientation(transform.eulerAngles, _velocity); if (Result() > 0 && currentWp < waypoints.Count - 1) { currentWp++; _target = waypoints[currentWp]; } }
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = _target.position - transform.position; //#direction distance = _SteeringOut._linear.magnitude; if (distance > _slowRadius) { _targetSpeed = _maxSpeed; } else if (distance <= _targetRadius) { _targetSpeed = 0; } else { _targetSpeed = _maxSpeed * distance / _slowRadius; } _targetVelocity = _SteeringOut._linear.normalized * _targetSpeed; _SteeringOut._linear = (_targetVelocity - _currentVelocity); if (_targetSpeed < _maxSpeed) //jika melambat gunakan brakeForce { _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxBrakeForce; } else { if (_SteeringOut._linear.magnitude > _maxAcceleration) { _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxAcceleration; } } // this.transform.eulerAngles = getNewOrientation(this.transform.eulerAngles, _KinematicOut._velocity); //rotation menggunakan euler angle _SteeringOut._angular = Vector3.zero; //orientasi belum kita hitung return(_SteeringOut); }
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = _target.position - transform.position; //#direction distance = _SteeringOut._linear.magnitude; if (distance > _slowRadius) { _targetSpeed = _maxSpeed; } else if (distance <= _targetRadius) { _targetSpeed = 0; } else { _targetSpeed = _maxSpeed * distance / _slowRadius; } _targetVelocity = _SteeringOut._linear.normalized * _targetSpeed; _SteeringOut._linear = (_targetVelocity - _velocity); // if (_targetSpeed < _maxSpeed) //jika melambat gunakan brakeForce // { // _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. // _SteeringOut._linear *= _maxBrakeForce; // } // else // { if (_SteeringOut._linear.magnitude > _maxAcceleration) { _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxAcceleration; } // } return(_SteeringOut); }
public SteeringData getCollideAvoid() { Vector3 ahead = this.transform.position + _velocity.normalized * _max_See_Ahead; Vector3 ahead2 = this.transform.position + _velocity.normalized * _max_See_Ahead * 0.5f; Circle _ClosestObsCirle = findMostThreateningObstacle(ahead, ahead2); SteeringData _SteeringOut = new SteeringData(); if (_ClosestObsCirle != null) { _SteeringOut._linear = ahead - _ClosestObsCirle._center; _SteeringOut._linear = _SteeringOut._linear.normalized * _max_Avoid_Force; } else { _SteeringOut._linear = Vector3.zero; } return(_SteeringOut); }
public SteeringData getSteering() { SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = this.transform.position - _target.position; if (_SteeringOut._linear.magnitude > _radius * 1.49) { _SteeringOut._linear = Vector3.zero; return(_SteeringOut); } if (_SteeringOut._linear.magnitude > _radius) { _SteeringOut._linear.Normalize(); _SteeringOut._linear *= _maxAcceleration * -1; _SteeringOut._angular = Vector3.zero; return(_SteeringOut); } _SteeringOut._linear.Normalize(); _SteeringOut._linear *= _maxAcceleration; _SteeringOut._angular = Vector3.zero; return(_SteeringOut); }
private SteeringOutput GetPrioritySteering() { SteeringOutput steering = new SteeringOutput(); float sqrThreshold = priorityThreshold * priorityThreshold; foreach (var steeringdata in SteeringGroups) { steering = new SteeringOutput(); for (int i = 0; i < steeringdata.Value.Count; i++) { SteeringData singlesteering = steeringdata.Value[i]; steering.linearAcceleration += (singlesteering.weight * singlesteering.steering.linearAcceleration); steering.angularAcceleration += (singlesteering.weight * singlesteering.steering.angularAcceleration); } if (steering.linearAcceleration.sqrMagnitude > sqrThreshold || Mathf.Abs(steering.angularAcceleration) > priorityThreshold) { return(steering); } } return(steering); }
public SteeringData getSteering() { //SteeringData _steeringOut = new SteeringData(); //_steeringOut._linear = _target.position - this.transform.position; //#direction //Debug.Log(_steeringOut._linear.magnitude); //if (_steeringOut._linear.magnitude < _radius) //jika di dalam radius velocity = 0; berhenti //{ // _steeringOut._linear = Vector3.zero; //jika di dalam radius velocity = 0; berhenti // _steeringOut._angular = Vector3.zero; // return _steeringOut; //} //_steeringOut._linear /= _timeToTarget; //agar datang sesuai waktu yg di tentukan //if (_steeringOut._linear.magnitude > _maxSpeed) //{ // _steeringOut._linear = _steeringOut._linear.normalized; // normalize membuat resultan vektor = 1. // _steeringOut._linear *= _maxSpeed; //} ////this.transform.eulerAngles = getNewOrientation(this.transform.eulerAngles, _steeringOut._velocity); //rotation menggunakan euler angle //_steeringOut._angular = Vector3.zero; //return _steeringOut; SteeringData _SteeringOut = new SteeringData(); _SteeringOut._linear = _target.position - transform.position; //#direction if (_SteeringOut._linear.magnitude < _radius) //jika di dalam radius velocity = 0; berhenti { _SteeringOut._linear = Vector3.zero; //jika di dalam radius velocity = 0; berhenti _SteeringOut._angular = Vector3.zero; return(_SteeringOut); } _SteeringOut._linear = _SteeringOut._linear.normalized; // normalize membuat resultan vektor = 1. _SteeringOut._linear *= _maxAcceleration; // this.transform.eulerAngles = getNewOrientation(this.transform.eulerAngles, _steeringOut._velocity); //rotation menggunakan euler angle _SteeringOut._angular = Vector3.zero; //orientasi belum kita hitung Debug.Log("steer:" + _SteeringOut._linear.magnitude); return(_SteeringOut); }
public void SetSteeringData(SteeringData data) { _steeringData = data; _followBehaviour.SetSteeringData(_steeringData); }