返回介绍

Mathf.SmoothDampAngle 平滑阻尼角度

发布于 2019-12-18 15:38:00 字数 3277 浏览 1273 评论 0 收藏 0

JavaScript => static function SmoothDampAngle(current: float, target: float, currentVelocity: float, smoothTime: float, maxSpeed: float = Mathf.Infinity, deltaTime: float = Time.deltaTime): float;
C# => static float SmoothDampAngle(float current, float target, float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

Parameters 参数

currentThe current position.
当前的位置。
targetThe position we are trying to reach.
我们试图达到的位置。
currentVelocityThe current velocity, this value is modified by the function every time you call it.
当前速度,这个值在你访问这个函数的时候会被随时修改。
smoothTimeApproximately the time it will take to reach the target. A smaller value will reach the target faster.
要到达目标位置的近似时间,实际到达目标时要快一些。
maxSpeedOptionally allows you to clamp the maximum speed.
可选参数,允许你限制的最大速度。
deltaTimeThe time since the last call to this function. By default Time.deltaTime.
上次调用该函数到现在的时间。缺省为Time.deltaTime。

Description 描述

Gradually changes an angle given in degrees towards a desired goal angle over time.

随着时间的推移逐渐改变一个给定的角度到期望的角度。

The value is smoothed by some spring-damper like function. The function can be used to smooth any kind of value, positions, colors, scalars. The most common use is for smoothing a follow camera.

这个值通过一些弹簧减震器类似的功能被平滑。这个函数可以用来平滑任何一种值,位置,颜色,标量。最常见的是平滑一个跟随摄像机。

JavaScript:

// A simple smooth follow camera,
// that follows the targets forward direction
 
var target : Transform; 
var smooth = 0.3; 
var distance = 5.0;
private var yVelocity = 0.0; 
function Update () { 
	// Damp angle from current y-angle towards target y-angle 
	var yAngle : float = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, yVelocity, smooth); 
	// Position at the target
	var position : Vector3 = target.position;
	// Then offset by distance behind the new angle 
	position += Quaternion.Euler(0, yAngle, 0) * Vector3 (0, 0, -distance); 
	// Apply the position 
	transform.position = position;
 
	// Look at the target 
	transform.LookAt(target);
} 

C#:

using UnityEngine;
using System.Collections;
 
public class ExampleClass : MonoBehaviour {
    public Transform target;
    public float smooth = 0.3F;
    public float distance = 5.0F;
    private float yVelocity = 0.0F;
    void Update() {
        float yAngle = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y, ref yVelocity, smooth);
        Vector3 position = target.position;
        position += Quaternion.Euler(0, yAngle, 0) * new Vector3(0, 0, -distance);
        transform.position = position;
        transform.LookAt(target);
    }
}

Mathf

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文