- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
  
- 纳金币
- 38268
- 精华
- 111
|
魔兽视角的代码- /*
-
- This camera smoothes out rotation around the y-axis and height.
-
- Horizontal Distance to the target is always fixed.
-
- There are many different ways to smooth the rotation but doing it this way gives you a lot of control over how the camera behaves.
-
- For every of those smoothed values we calculate the wanted value and the current value.
-
- Then we smooth it using the Lerp function.
-
- Then we apply the smoothed values to the transform's position.
-
- */
-
- // The target we are following
-
- var GO_T:GameObject;
-
- var target : Transform;
-
- var camera1:Camera;
-
- // The distance in the x-z plane to the target
-
- var distance = 10.0;
-
- // the height we want the camera to be above the target
-
- var height = 5.0;
-
- // How much we
-
- var heightDamping = 2.0;
-
- var rotationDamping = 3.0;
-
- // Place the script in the Camera-Control group in the component menu
-
- @script AddComponentMenu(“Camera-Control/Smooth Follow”)
-
- function LateUpdate () {
-
- // Early out if we don't have a target
-
- if (!target)
-
- return;
-
- distance += Input.GetAxis(“Mouse ScrollWheel”)*5;
-
- if(distance>10){
-
- distance=10;
-
- }
-
- else if(distance<0){
-
- distance=1;
-
- }
-
- if(Input.GetKey(KeyCode.Mouse1)){
-
- height+= Input.GetAxis(“Mouse Y”) *5;
-
- if(height>10){
-
- height=10;
-
- }
-
- else if(height<0){
-
- height=0;
-
- }
-
- }
-
- transform.LookAt (target);
-
- // Calculate the current rotation angles
-
- wantedRotationAngle = target.eulerAngles.y;
-
- wantedHeight = target.position.y + height;
-
- currentRotationAngle = transform.eulerAngles.y;
-
- currentHeight = transform.position.y;
-
- // Damp the rotation around the y-axis
-
- currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
-
- // Damp the height
-
- currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);
-
- // Convert the angle into a rotation
-
- currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
-
- // Set the position of the camera on the x-z plane to:
-
- // distance meters behind the target
-
- transform.position = target.position;
-
- transform.position -= currentRotation * Vector3.forward * distance;
-
- // Set the height of the camera
-
- transform.position.y = currentHeight;
-
- // Always look at the target
-
- transform.LookAt (target);
-
- var hit : RaycastHit;
-
- var fwd = transform.TransformDirection (Vector3.forward);
-
- if (Physics.Raycast (GO_T.transform.position, -fwd,hit, 3)) {
-
- if(hit.transform.tag==“wall”){
-
- camera1.depth=1;
-
- camera1.enabled=true;
-
- print (“aaaaaa”);
-
- }
-
- }
-
- if (Physics.Raycast (GO_T.transform.position, -fwd,hit, 3)==false) {
-
- camera1.depth=0;
-
- camera1.enabled=false;
-
- print (“dddddddd”);
-
- }
-
- }
复制代码 |
|