private void _UnityDrawLine(float hitAngle, Vector2 pos , UnityEngine.Color color , float distance , float decision_time) { var trunForce = Vector2.AngleToVector(hitAngle); var forcePos = pos + trunForce * (distance); UnityEngine.Debug.DrawLine( new UnityEngine.Vector3(pos.X, 0, pos.Y), new UnityEngine.Vector3(forcePos.X, 0, forcePos.Y), color, decision_time); }
public void TestSerializerVector2() { var ser = new Serializer(new DescriberBuilder(typeof(Regulus.CustomType.Vector2), typeof(float)).Describers); var v = new Regulus.CustomType.Vector2(99, 22); var array = ser.ObjectToBuffer(v); var v2 = (Regulus.CustomType.Vector2)ser.BufferToObject(array); NUnit.Framework.Assert.AreEqual(99, v2.X); NUnit.Framework.Assert.AreEqual(22, v2.Y); }
private void _UnityDrawLine(float hitAngle, Vector2 pos, UnityEngine.Color color, float distance, float decision_time) { var trunForce = Vector2.AngleToVector(hitAngle); var forcePos = pos + trunForce * (distance); UnityEngine.Debug.DrawLine( new UnityEngine.Vector3(pos.X, 0, pos.Y), new UnityEngine.Vector3(forcePos.X, 0, forcePos.Y), color, decision_time); }
public CrossStage(Remoting.ISoulBinder provider , Regulus.Project.SamebestKeys.IWorld world , string target_map , Regulus.CustomType.Vector2 target_position , string current_map , Regulus.CustomType.Vector2 current_position) { this._World = world; this._TargetMap = target_map; this._TargetPosition = target_position; this._CurrentMap = current_map; this._CurrentPosition = current_position; _Provider = provider; }
void _Act(ActionStatue action_statue, float move_speed, float direction /* ��V���� 0~360 */) { if (_CanSwitch(_CurrentAction, action_statue)) { // ���⭱��@�ɪ���V _Direction = (direction + _Direction) % 360; _CurrentAction = action_statue; _MoveSpeed = move_speed; var t = (float)((_Direction - 180) * Math.PI / 180); // ���ʦV�q //_UnitVector = new Types.Vector2() { X = (float)Math.Cos(t), Y = (float)Math.Sin(t) }; _UnitVector = new CustomType.Vector2() { X = -(float)Math.Sin(t), Y = -(float)Math.Cos(t) }; _Update = _First; } }
public TICKRESULT Detect(float delta, float decision_time, Entity entiry, StandardBehavior standard_behavior, float view_distance, int scan_angle) { var decisionTime = decision_time; var _Entiry = entiry; if (_Entiry == null) { throw new ArgumentNullException("_Entiry"); } var goblinWisdom = standard_behavior; var distance = view_distance; var scanAngle = scan_angle; var pos = _Entiry.GetPosition(); _TimeCounter += delta; if (_TimeCounter < decisionTime) { var view = (float)distance; var x = Math.PI * _TimeCounter / decisionTime; var y = (float)Math.Sin(x); var a = scanAngle * y - (scanAngle / 2); var target = goblinWisdom.Detect(a + _Entiry.Direction, view); if (target.Visible == null || (target.Visible != null && goblinWisdom.IsWall(target.Visible.EntityType))) { var hitDistnace = target.HitPoint.DistanceTo(pos); hitDistnace = (float)Math.Floor(hitDistnace); var vector = target.HitPoint - pos; var hitAngle = Vector2.VectorToAngle(vector.GetNormalized()); hitAngle += 360; hitAngle %= 360; //Unity Debug Code #if UNITY_EDITOR _UnityDrawLine(hitAngle, pos, UnityEngine.Color.red, view_distance, decisionTime); #endif _Nears.Add(new Exit() { Distance = hitDistnace, Direction = hitAngle }); } return(TICKRESULT.RUNNING); } var sortedDirections = from e in _Nears let diff = Math.Abs(e.Direction - _Entiry.Direction) where diff > 0.0f orderby diff select e; var soteds = from e in sortedDirections orderby e.Distance descending select e; var first = soteds.FirstOrDefault(); OutputEvent(first.Direction - _Entiry.Direction); _Nears.Clear(); _TimeCounter = 0.0f; #if UNITY_EDITOR var trunForce = Vector2.AngleToVector(first.Direction); var forcePos = pos + trunForce * (distance); UnityEngine.Debug.DrawLine(new UnityEngine.Vector3(pos.X, 0, pos.Y), new UnityEngine.Vector3(forcePos.X, 0, forcePos.Y), UnityEngine.Color.yellow, decisionTime); //UnityEngine.Debug.Log("TurnDirection = " + _StandardBehavior.TurnDirection); #endif return(TICKRESULT.SUCCESS); }