// Use this for initialization
    void Start()
    {
        if (MainCamera == null)
        {
            MainCamera = Camera.main;
        }
        if (TargetTransform != null)
        {
            _targetBeginTransform = TargetTransform;
        }
        else
        {
            Debug.LogError("没有设置任何观察目标");
        }
        var angles = MainCamera.transform.eulerAngles;

        //初始化用于计算rotation的两个值,但是由于后面用Quaternion.Euler(_y, _x, 0)时是反的,所以这里也是反的
        _targetY       = _y = angles.x;
        _targetX       = _x = ClampAngle(angles.y, YMinLimit, YMaxLimit);
        TargetOffset.y = MainCamera.transform.position.y;
        //_targetDistance = Distance;
        _targetDistance       = Mathf.Clamp(Vector3.Distance(MainCamera.transform.position, TargetTransform.position), MinDistance, MaxDistance);
        Distance              = Mathf.Clamp(_targetDistance, MinDistance, MaxDistance);
        _cameraBeginTransform = new StaticTransform(MainCamera.transform.position, MainCamera.transform.rotation, Distance);
        _pointOutLineDic      = new Dictionary <Transform, GameObject>();
    }
 // Use this for initialization
 void Start()
 {
     // construct seek
     StaticTransform charStatic = new StaticTransform(transform);
     StaticTransform targetStatic = new StaticTransform(target);
     seek = new KinematicSeek(charStatic, targetStatic, maxSpeed);
 }
Example #3
0
 public StaticCollider(AbstractScene scene, Vector2 gridPosition) : base(null)
 {
     Transform = new StaticTransform(this)
     {
         GridCoordinates = gridPosition
     };
     this.scene = scene;
     scene.GridCollisionChecker.Add(this);
 }
    public KinematicArrive(StaticTransform _character, 
							StaticTransform _target,
							float _maxSpeed,
							float _goalRadius,
							float _timeToTarget)
    {
        character = _character;
        target = _target;
        maxSpeed = _maxSpeed;
        goalRadius = _goalRadius;
        timeToTarget = _timeToTarget;
    }
 // Use this for initialization
 void Start()
 {
     StaticTransform charStatic = new StaticTransform(transform);
     wander = new KinematicWander(charStatic, maxSpeed, maxRotation);
 }
 /// <summary>
 /// 响应鼠标所有操作
 /// In reaction to all mouse controll
 /// </summary>
 private void AllMouseReaction(Transform pTarget, bool pIsRotateY)
 {
     if (!EventSystem.current.IsPointerOverGameObject())
     {
         //Debug.Log("非击在UI上了");
         if (_inspectFurniture)
         {
             //Debug.Log("在观看模式");
             if (_isInspectClickSthElse)
             {
                 if (Vector3.Distance(Input.mousePosition, MouseClickDownPosition) > 2f)
                 {
                     //Debug.Log("在观看模式下移开鼠标了");
                     _isInspectClickSthElse = false;
                 }
             }
             if (Input.GetMouseButtonDown((int)MouseButton.LEFT_MOUSE_BUTTON))
             {
                 //Debug.Log("在观看模式下按下鼠标");
                 MouseClickDownPosition = Input.mousePosition;
                 _isInspectClickSthElse = true;
             }
             if (Input.GetMouseButtonUp((int)MouseButton.LEFT_MOUSE_BUTTON))
             {
                 //Debug.Log("在观看模式下松开鼠标");
                 if (_isInspectClickSthElse)
                 {
                     //Debug.Log("在观看模式下松开鼠标");
                     _isInspectClickSthElse = false;
                     //Debug.Log("点击了该物品");
                     TargetTransform   = _targetBeginTransform;
                     _targetX          = _cameraLastTransform.Rotation.eulerAngles.y;
                     _targetY          = _cameraLastTransform.Rotation.eulerAngles.x;
                     _targetDistance   = _cameraLastTransform.Distance;
                     _inspectFurniture = false;
                 }
             }
         }
         else
         {
             //Debug.Log("在非观看模式");
             if (_isClickSthDown)
             {
                 if (Vector3.Distance(Input.mousePosition, MouseClickDownPosition) > 2f)
                 {
                     //Debug.Log("在非观看模式下移开鼠标了");
                     _isClickSthDown = false;
                 }
             }
             if (IsHitGameObjectByTag(ColorController.TARGET_TAG))
             {
                 if (Input.GetMouseButtonDown((int)MouseButton.LEFT_MOUSE_BUTTON))
                 {
                     //Debug.Log("在非观看模式下按下鼠标");
                     MouseClickDownPosition = Input.mousePosition;
                     _isClickSthDown        = true;
                 }
                 if (Input.GetMouseButtonUp((int)MouseButton.LEFT_MOUSE_BUTTON))
                 {
                     //Debug.Log("在非观看模式下松开鼠标");
                     if (_isClickSthDown)
                     {
                         //Debug.Log("在非观看模式下松开鼠标时符合条件");
                         _isClickSthDown = false;
                         //Debug.Log("点击了该物品");
                         _cameraLastTransform   = new StaticTransform(MainCamera.transform.position, MainCamera.transform.rotation, Distance);
                         TargetTransform        = _hitInfo.transform;
                         _targetX               = FocusTargetX;
                         _targetY               = FocusTargetY;
                         _targetDistance        = FocusDistance;
                         _inspectFurniture      = true;
                         _isInspectClickSthElse = false;
                     }
                 }
             }
         }
     }
     OnMouseDrag(pTarget, pIsRotateY);
 }
 public KinematicWander(StaticTransform character, float maxSpeed, float maxRotation)
 {
     this.character = character;
     this.maxSpeed = maxSpeed;
     this.maxRotationDegrees = maxRotation;
 }
 public KinematicSeek(StaticTransform _character, StaticTransform _target, float _maxSpeed)
 {
     character = _character;
     target = _target;
     maxSpeed = _maxSpeed;
 }
 // Use this for initialization
 void Start()
 {
     StaticTransform charStatic = new StaticTransform(transform);
     StaticTransform targetStatic = new StaticTransform(target);
     flee = new KinematicFlee(charStatic, targetStatic, maxSpeed);
 }
 // Use this for initialization
 void Start()
 {
     StaticTransform charStatic = new StaticTransform(transform);
     StaticTransform targetStatic = new StaticTransform(target);
     arrive = new KinematicArrive(charStatic, targetStatic, maxSpeed, arriveGoalRadius, arriveTimeToTarget);
 }