public override SteeringOutput.SteeringOutput getSteering() { SteeringOutput.SteeringOutput steering = new SteeringOutput.SteeringOutput(new Vector2(.0f, .0f), .0f); Vector2 dir = Target.getPosition() - Character.getPosition(); if (dir.magnitude == 0) { return(steering); } Debug.Log(dir); GameObject dummy = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy")); AgentMeta aux = dummy.GetComponent <AgentMeta> (); aux.setPosition(Target.getPosition()); aux.setOrientation(Mathf.Atan2(-dir.x, dir.y) * Mathf.Rad2Deg); Debug.Log(Mathf.Atan2(-dir.x, dir.y) * Mathf.Rad2Deg); Behaviour alinear = new Align(aux, Character, Mathf.PI / 10, Mathf.PI / 100, .1f); //steering.linear = steering.linear.normalized * Character.maxAcceleration; steering = alinear.getSteering(); Debug.Log(steering.angular); MonoBehaviour.Destroy(dummy); return(steering); }
public override SteeringOutput.SteeringOutput getSteering() { wanderOrientation += base.randomBinomial() * wanderRate; //Debug.Log (wanderOrientation); float targetOrientation = wanderOrientation + Character.getOrientation(); float targetOrientationRadian = targetOrientation * Mathf.Deg2Rad; float orientationRadian = Character.getOrientation() * Mathf.Deg2Rad; //Debug.Log (targetOrientationRadian); //Debug.Log (targetOrientation); Vector2 target = Character.getPosition() + wanderOffset * new Vector2(Mathf.Cos(orientationRadian), Mathf.Sin(orientationRadian)).normalized + wanderRadius * new Vector2(Mathf.Cos(targetOrientationRadian), Mathf.Sin(targetOrientationRadian)).normalized; //Debug.Log (Mathf.Cos (180f * Mathf.Deg2Rad)); //Debug.Log(new Vector2 (Mathf.Cos (targetOrientationRadian), Mathf.Sin (targetOrientationRadian))); //Debug.Log (target); GameObject dummy = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy")); AgentMeta dummyAgent = dummy.GetComponent <AgentMeta> (); dummyAgent.setPosition(target); dummyAgent.setOrientation(wanderOrientation + Character.getOrientation()); //dummyAgent.setOrientation ( //Debug.Log (dummyAgent.getPosition ()- Character.getPosition()); //Behaviour face = new Face (dummyAgent, Character); //Debug.Log (dummyAgent.getPosition () - Character.getPosition()); //Debug.Log (dummyAgent.getOrientation ()); //Debug.Log (Character.getOrientation ()); Behaviour seek = new SeekWhileLooking(dummyAgent, Character); //Behaviour lwyg = new LWYG (Character); //SteeringOutput.SteeringOutput steering = seek.getSteering () + lwyg.getSteering(); SteeringOutput.SteeringOutput steering = seek.getSteering(); Debug.Log(steering.angular); //steering.linear = Character.maxAcceleration * new Vector2 (Mathf.Cos (orientationRadian), Mathf.Sin (orientationRadian)); MonoBehaviour.Destroy(dummy); return(steering); }
public override SteeringOutput.SteeringOutput getSteering() { SteeringOutput.SteeringOutput steering = new SteeringOutput.SteeringOutput(); Vector2 velocity = Character.getVelocity(); if (velocity.magnitude == 0) { return(steering); } GameObject dummy = (GameObject)MonoBehaviour.Instantiate(Resources.Load("Prefab/Dummy")); AgentMeta aux = dummy.GetComponent <AgentMeta> (); aux.setPosition(new Vector2(0.0f, 0.0f)); aux.setOrientation((Mathf.Atan2(-velocity.x, velocity.y) * Mathf.Rad2Deg) % 360.0f); Behaviour alinear = new Align(aux, Character, Mathf.PI / 100, Mathf.PI / 10, .1f); //steering.linear = steering.linear.normalized * Character.maxAcceleration; steering = alinear.getSteering(); MonoBehaviour.Destroy(dummy); return(steering); }