// 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); }
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); }