{"id":597,"date":"2016-09-23T14:04:03","date_gmt":"2016-09-23T06:04:03","guid":{"rendered":"http:\/\/39.100.100.179\/?p=597"},"modified":"2016-10-11T09:27:06","modified_gmt":"2016-10-11T01:27:06","slug":"%e7%9b%b8%e6%9c%ba%e5%b9%b3%e6%bb%91%e8%b7%9f%e9%9a%8f","status":"publish","type":"post","link":"http:\/\/www.u3d8.com\/?p=597","title":{"rendered":"\u76f8\u673a\u5e73\u6ed1\u8ddf\u968f"},"content":{"rendered":"<p>unity\u4e2d\u7ecf\u5e38\u4f1a\u7528\u5230\u56fa\u5b9a\u89c6\u89d2\u7684\u76f8\u673a\u8ddf\u968f\uff0c\u7136\u540e\u767e\u5ea6\u53d1\u73b0\u5927\u5bb6\u90fd\u662f\u81ea\u5df1\u5199\u7684\uff0c\u7136\u540e\u5076\u4e5f\u5199\u54af\u4e00\u4e2a\uff0c\u5206\u4eab\u4e00\u4e0b<\/p>\n<p>\u5148\u4e0a\u4ee3\u7801\uff1a<br \/>\n\u5148\u662f\u4f7f\u7528if\u8fdb\u884c\u5224\u65ad\u7684\u7248\u672c\uff0c\u652f\u6301\u5b9e\u65f6\u9501\u5b9axyz\u7684\u4f4d\u7f6e<\/p>\n<pre class=\"lang:c# decode:true \">using UnityEngine;\r\n\r\npublic class FixedFollowCamera : MonoBehaviour\r\n{\r\n\r\n\t\/\/ \u9700\u8981\u8ddf\u968f\u7684\u76ee\u6807\u5bf9\u8c61\r\n    public Transform target;\r\n\r\n    \/\/ \u9700\u8981\u9501\u5b9a\u7684\u5750\u6807\uff08\u53ef\u4ee5\u5b9e\u65f6\u751f\u6548\uff09\r\n    public bool freazeX, freazeY, freazeZ;\r\n\r\n    \/\/ \u8ddf\u968f\u7684\u5e73\u6ed1\u65f6\u95f4\uff08\u7c7b\u4f3c\u4e8e\u6ede\u540e\u65f6\u95f4\uff09\r\n    public float smoothTime = 0.3F;\r\n    private float xVelocity, yVelocity, zVelocity = 0.0F;\r\n\r\n    \/\/ \u8ddf\u968f\u7684\u504f\u79fb\u91cf\r\n    private Vector3 offset;\r\n\r\n\t\/\/ \u5168\u5c40\u7f13\u5b58\u7684\u4f4d\u7f6e\u53d8\u91cf\r\n    private Vector3 oldPosition;\r\n\r\n\t\/\/ \u8bb0\u5f55\u521d\u59cb\u4f4d\u7f6e\r\n    private Vector3 startPosition;\r\n\r\n    void Start()\r\n    {\r\n        startPosition = transform.position;\r\n        offset = transform.position - target.position;\r\n    }\r\n\r\n    void LateUpdate()\r\n    {\r\n        oldPosition = transform.position;\r\n\r\n        if (!freazeX)\r\n        {\r\n            oldPosition.x = Mathf.SmoothDamp(transform.position.x, target.position.x + offset.x, ref xVelocity, smoothTime);\r\n        }\r\n\r\n        if (!freazeY)\r\n        {\r\n            oldPosition.y = Mathf.SmoothDamp(transform.position.y, target.position.y + offset.y, ref yVelocity, smoothTime);\r\n        }\r\n\r\n        if (!freazeZ)\r\n        {\r\n            oldPosition.z = Mathf.SmoothDamp(transform.position.z, target.position.z + offset.z, ref zVelocity, smoothTime);\r\n        }\r\n\r\n        transform.position = oldPosition;\r\n    }\r\n\r\n    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u7528\u4e8e\u91cd\u65b0\u5f00\u59cb\u6e38\u620f\u65f6\u76f4\u63a5\u91cd\u7f6e\u76f8\u673a\u4f4d\u7f6e\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public void ResetPosition()\r\n    {\r\n        transform.position = startPosition;\r\n    }\r\n}<\/pre>\n<p>delegate\u7684\u7248\u672c<\/p>\n<pre class=\"lang:c# decode:true \">using UnityEngine;\r\n\r\n\/\/ \u66f4\u65b0\u4f4d\u7f6e\u59d4\u6258\uff0c\u7528\u4e8e\u51cf\u5c11\u5224\u65ad\u6b21\u6570\uff0c\u5177\u4f53\u6027\u80fd\u5347\u964d\u672a\u77e5\r\ndelegate void UpdatePosition();\r\n\r\npublic class FixedFollowCamera : MonoBehaviour\r\n{\r\n\r\n    \/\/ \u9700\u8981\u8ddf\u968f\u7684\u76ee\u6807\u5bf9\u8c61\r\n    public Transform target;\r\n\r\n    \/\/ \u9700\u8981\u9501\u5b9a\u7684\u5750\u6807\uff08\u65e0\u6cd5\u5b9e\u65f6\u751f\u6548\uff09\r\n    public bool freazeX, freazeY, freazeZ;\r\n\r\n    \/\/ \u8ddf\u968f\u7684\u5e73\u6ed1\u65f6\u95f4\uff08\u7c7b\u4f3c\u4e8e\u6ede\u540e\u65f6\u95f4\uff09\r\n    public float smoothTime = 0.3F;\r\n    private float xVelocity, yVelocity, zVelocity = 0.0F;\r\n\r\n    \/\/ \u8ddf\u968f\u7684\u504f\u79fb\u91cf\r\n    private Vector3 offset;\r\n\r\n    \/\/ \u5168\u5c40\u7f13\u5b58\u7684\u4f4d\u7f6e\u53d8\u91cf\r\n    private Vector3 oldPosition;\r\n\r\n    \/\/ \u8bb0\u5f55\u521d\u59cb\u4f4d\u7f6e\r\n    private Vector3 startPosition;\r\n\r\n    private UpdatePosition JudgePosition;\r\n\r\n    void Start()\r\n    {\r\n        startPosition = transform.position;\r\n        offset = transform.position - target.position;\r\n\r\n        \/\/ \u5206\u914d\u4e8b\u4ef6\r\n        if (!freazeX)\r\n        {\r\n            JudgePosition += MoveX;\r\n        }\r\n        if (!freazeY)\r\n        {\r\n            JudgePosition += MoveY;\r\n        }\r\n        if (!freazeZ)\r\n        {\r\n            JudgePosition += MoveZ;\r\n        }\r\n    }\r\n\r\n    void LateUpdate()\r\n    {\r\n        oldPosition = transform.position;\r\n        JudgePosition();\r\n        transform.position = oldPosition;\r\n    }\r\n\r\n    private void MoveX()\r\n    {\r\n        oldPosition.x = Mathf.SmoothDamp(transform.position.x, target.position.x + offset.x, ref xVelocity, smoothTime);\r\n    }\r\n\r\n    private void MoveY()\r\n    {\r\n        oldPosition.y = Mathf.SmoothDamp(transform.position.y, target.position.y + offset.y, ref yVelocity, smoothTime);\r\n    }\r\n\r\n    private void MoveZ()\r\n    {\r\n        oldPosition.z = Mathf.SmoothDamp(transform.position.z, target.position.z + offset.z, ref zVelocity, smoothTime);\r\n    }\r\n\r\n    \/\/\/ &lt;summary&gt;\r\n    \/\/\/ \u7528\u4e8e\u91cd\u65b0\u5f00\u59cb\u6e38\u620f\u65f6\u76f4\u63a5\u91cd\u7f6e\u76f8\u673a\u4f4d\u7f6e\r\n    \/\/\/ &lt;\/summary&gt;\r\n    public void ResetPosition()\r\n    {\r\n        transform.position = startPosition;\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>unity\u4e2d\u7ecf\u5e38\u4f1a\u7528\u5230\u56fa\u5b9a\u89c6\u89d2\u7684\u76f8\u673a\u8ddf\u968f\uff0c\u7136\u540e\u767e\u5ea6\u53d1\u73b0\u5927\u5bb6\u90fd\u662f\u81ea\u5df1\u5199\u7684\uff0c\u7136\u540e\u5076\u4e5f &hellip; <a href=\"http:\/\/www.u3d8.com\/?p=597\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[169,168,170,171],"_links":{"self":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/597"}],"collection":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=597"}],"version-history":[{"count":3,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/597\/revisions"}],"predecessor-version":[{"id":713,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=\/wp\/v2\/posts\/597\/revisions\/713"}],"wp:attachment":[{"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=597"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.u3d8.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}