public void Add3DGraph(string name, BasicFunction funcX, VectorFunc funcY, string xTitle, string yTitle) { GraphUnderlying graphU = new GraphUnderlying(xTitle, yTitle); graphU.AddTimeline(new Timeline("x " + name, Colors.Red)); graphU.AddTimeline(new Timeline("y " + name, Colors.Green)); graphU.AddTimeline(new Timeline("z " + name, Colors.Blue)); BasicFunction xVec = () => funcY().X; BasicFunction yVec = () => funcY().Y; BasicFunction zVec = () => funcY().Z; var list = new List <BasicFunctionPair>(); list.Add(new BasicFunctionPair() { XFunc = funcX, YFunc = xVec }); list.Add(new BasicFunctionPair() { XFunc = funcX, YFunc = yVec }); list.Add(new BasicFunctionPair() { XFunc = funcX, YFunc = zVec }); AddGraph(graphU, list); }
/// <summary> /// Same idea as the SyncPinch script but with more pairs of colliders. /// </summary> public void SyncGun() { Vector3 thumbTipPos = thumbTip.transform.position; Vector3 indexTipPos = indexTip.transform.position; Vector3 middleTipPos = middleTip.transform.position; Vector3 ringTipPos = ringTip.transform.position; Vector3 pinkyTipPos = pinkyTip.transform.position; Vector3 palmDirection = VectorFunc.Direction(pinkyTipPos, ringTipPos); float palmDistance = VectorFunc.Distance(pinkyTipPos, ringTipPos); Debug.Log("Distance between ring and pinky tip = " + palmDistance); gunPalmDirections.Add(palmDirection); gunPalmDistances.Add(palmDistance); float avPalmDistance = FloatAverage(gunPalmDistances); Vector3 avPalmDirection = Vector3Average(gunPalmDirections); gunPalm.transform.position = pinkyTipPos; gunPalm.transform.LookAt(avPalmDirection); gunPalm.transform.localScale = new Vector3( gunPalm.transform.localScale.x, gunPalm.transform.localScale.y, avPalmDistance * 2f ); Vector3 pointDirection = VectorFunc.Direction(middleTipPos, indexTipPos); float pointDistance = VectorFunc.Distance(middleTipPos, indexTipPos); Debug.Log("Distance between middle and index tip = " + pointDistance); gunPointDirections.Add(pointDirection); gunPointDistances.Add(pointDistance); float avPointDistance = FloatAverage(gunPointDistances); Vector3 avPointDirection = Vector3Average(gunPointDirections); gunPoint.transform.position = middleTipPos; gunPoint.transform.LookAt(avPointDirection); gunPoint.transform.localScale = new Vector3( gunPoint.transform.localScale.x, gunPoint.transform.localScale.y, avPointDistance * 2f ); Vector3 thumbDownPosition = thumbTipPos; thumbDownPositions.Add(thumbDownPosition); Vector3 avThumbDownPosition = Vector3Average(thumbDownPositions); gunThumbDown.transform.position = avThumbDownPosition; gunThumbDown.transform.localScale = new Vector3( gunPoint.transform.localScale.x, gunPoint.transform.localScale.y, 0.01f ); }
public void Add3DGraph(string name, Timeline.GetValue funcX, VectorFunc funcY, string xTitle, string yTitle) { GraphUnderlying graphU = new GraphUnderlying(xTitle, yTitle); graphU.AddTimeline(new Timeline("x " + name, funcX, (() => funcY().X), Colors.Red)); graphU.AddTimeline(new Timeline("y " + name, funcX, (() => funcY().Y), Colors.Green)); graphU.AddTimeline(new Timeline("z " + name, funcX, (() => funcY().Z), Colors.Blue)); AddGraph(new Graph(graphU)); }
private void Charge() { GameObject a = AvatarRespawner.Instance.Avatar; if (a != null) { Debug.Log("Charging"); moveScript.Move(VectorFunc.ConvertTo2DVec(a.transform.position - transform.position), moveSpeed); } }
public string prevFunction() { resetSolutionCurve(); current_func_index--; if (current_func_index < 0) { current_func_index = functions.Count - 1; } current_func = functions[current_func_index]; generate(); return(function_names[current_func_index]); }
}//generate public string nextFunction() { resetSolutionCurve(); current_func_index++; if (current_func_index >= functions.Count) { current_func_index = 0; } current_func = functions[current_func_index]; generate(); return(function_names[current_func_index]); }
public void Move(Vector2 direction, float speed) { direction.Normalize(); if (rb != null) { Vector2 currentPos = VectorFunc.ConvertTo2DVec(transform.position); Debug.DrawRay(currentPos, direction, Color.blue); Debug.Log((direction * speed * Time.deltaTime).magnitude); rb.position = (currentPos + direction * speed * Time.deltaTime); } else { transform.Translate(direction * speed * Time.deltaTime, Space.World); } }
public void Add3DGraph(string name, BasicFunction funcX, VectorFunc funcY, string xAxis, string yAxis) { var xVec = new TimelineInfo(new TimelinePrototype("x " + name, Color.Red), new BasicFunctionPair(funcX, () => funcY().X)); var yVec = new TimelineInfo(new TimelinePrototype("y " + name, Color.Green), new BasicFunctionPair(funcX, () => funcY().Y)); var zVec = new TimelineInfo(new TimelinePrototype("z " + name, Color.Blue), new BasicFunctionPair(funcX, () => funcY().Z)); AddGraph(new List <TimelineInfo> { xVec, yVec, zVec }, xAxis, yAxis); }
private void Awake() { ps = GetComponent <ParticleSystem>(); lr = GetComponent <LineRenderer>(); //lr.positionCount = 20; timestamp = System.DateTime.Now.ToString("yyyyMMddHHmmss"); functions = new List <VectorFunc> { spiral_up, hyperbolic, identity, fluid_flow, }; function_names = new List <string> { "spiral_up", "hyperbolic", "identity", "fluid_flow", }; function_descriptions = new List <string> { "<-y, x, 0.1>", "<yz, xz, xy>", "<x, y, z>", "<sin(x) + sin(y) + sin(z),\nsin(x) - sin(y) + sin(z),\nsin(x) + sin(y) - sin(z)>" }; current_func_index = 0; start_pos_indicator.gameObject.SetActive(false); start_pos = Vector3.zero; n_vectors_x = (x_max - x_min) * resolution + 1; n_vectors_y = (y_max - y_min) * resolution + 1; n_vectors_z = (z_max - z_min) * resolution + 1; n_vectors = n_vectors_x * n_vectors_y * n_vectors_z; Debug.Log("n_vectors: " + n_vectors); vectors = new ParticleSystem.Particle[n_vectors]; current_func = functions[current_func_index]; generate(); // set particles //StartCoroutine(draw_solution(new Vector3(1f, -1f, 0.8f))); }//Awake()
//==============================UPDATE METHODS================================== void LazerMovement(GameObject lazer, Vector3 startPos, Vector3 endPos) { Vector3 direction = VectorFunc.Direction(startPos, endPos); float distance = VectorFunc.Distance(startPos, endPos); if (lazer != null) { lazer.transform.position = startPos; lazer.transform.LookAt(endPos); //Set the scale of the cyl. The x & y values remain the same but the z value is equal to the distance * initial z value. lazer.transform.localScale = new Vector3( lazer.transform.localScale.x, lazer.transform.localScale.y, distance * cylSZ ); } else { Debug.Log("Lazer not found."); } }
void ShootProjectile() { Vector3 direction; GameObject shotObj = Instantiate(shot); Rigidbody rb = shotObj.GetComponent <Rigidbody>(); shotObj.GetComponent <ShotStats>().ShotDamage = 1; if (isRightSpawn) { shotObj.transform.position = shotSpawnR.transform.position; } else { shotObj.transform.position = shotSpawnL.transform.position; } direction = VectorFunc.Direction(shotObj.transform.position, player.transform.position); rb.velocity = 1100 * direction; isRightSpawn = !isRightSpawn; }
/// <summary> /// This function gets the average direction and distance between the thumb tip and the index tip, /// then uses the averages to position the pinchBox collider. /// </summary> public void SyncPinch() { Vector3 thumbTipPos = thumbTip.transform.position - hand_base.transform.position; Vector3 indexTipPos = indexTip.transform.position - hand_base.transform.position; Vector3 direction = VectorFunc.Direction(thumbTipPos, indexTipPos); float distance = VectorFunc.Distance(thumbTipPos, indexTipPos); Debug.Log("Distance between thumb and index tip = " + distance); pinchDirections.Add(thumbTip.transform.InverseTransformDirection(direction)); pinchDistances.Add(distance); float avDistance = FloatAverage(pinchDistances); Vector3 avDirection = Vector3Average(pinchDirections); pinchBox.transform.LookAt(thumbTip.transform.TransformDirection(avDirection)); pinchBox.transform.localScale = new Vector3( pinchBox.transform.localScale.x, pinchBox.transform.localScale.y, avDistance * 2f ); }
private bool AvatarInRange() { return(AvatarRespawner.Instance.Avatar != null && Vector2.Distance(VectorFunc.ConvertTo2DVec(AvatarRespawner.Instance.Avatar.transform.position), VectorFunc.ConvertTo2DVec(transform.position)) < aggroDistance); }