日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Silverlight动画]转向行为 - 转向机车

發布時間:2025/7/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Silverlight动画]转向行为 - 转向机车 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉向機車類繼承機車類并增加轉向行為。每個行為都被定義成公開函數,在每幀或者一段時間間隔內調用以實現對應的轉向力。通常所有轉向力在調用之后再調用機車的update函數。

轉向函數都是這樣工作的:不管什么時候調用了一個轉向函數,都會計算轉向力,這個力用來確定機車是順時針旋轉還是逆時針旋轉。比如,seek(尋找)函數會 計算出一個力,確保機車能從當前方向直接面向目標點。這或許會受到不止一個擁有轉向行為的機車的影響,起初的尋找點,會在考慮避開或躲避后而改變。當這些 力疊加后,update函數才被調用,最終把一切都反應在機車上,并導致其速度的改變(方向和大小)。

public class SteeredVehicle:Vehicle{private double _maxForce = 1;private Vector2D _steeringForce;public SteeredVehicle(){_steeringForce = new Vector2D(0, 0); }public double maxForce{get{return _maxForce;}set{_maxForce = value;}}public override void update(){_steeringForce.truncate(_maxForce);_steeringForce = _steeringForce.divide(_mass);_velocity = _velocity.add(_steeringForce);_steeringForce = new Vector2D(0, 0);base.update();}}

立刻進入眼簾的是_steeringForce屬性,它是一個2D向量。該屬性作為每個行為疊加后的轉向合力。同時留意此處還有一個_maxForce屬 性,因為現實中不會有什么旋轉是一瞬間完成的,所以要對旋轉力加以限制,使其在一幀里的大小不會太離譜。可以通過公maxForce賦值對maxForce的修正,會使機車旋轉更急劇,移動更快速,走位更準確,或是出現一個很牛x的大甩尾。
現在,讓我們解剖update函數。先假設有一堆轉向行為已經被調用,那么此時的_steeringForce屬性即是一個有意義的向量。第一個 truncate(截斷)函數是不讓_steeringForce超過最大作用力。然后除以(divide)機車的質量(mass)。在現實中,越重的物 體有著越大的動力,旋轉的角度也越大,而較輕的物體則旋轉更快速。接著把轉向力疊加于機車的當前速度上,再把_steeringForce設回零向量,以 便于下一輪作用力的疊加。最終調用父類已經實現的update函數。

該是了解行為實現的時候了,從尋找(seek)行為開始。每個行為都是轉向機車類的一個公開函數,某些行為會需要新的屬性和額外的函數。

總結

以上是生活随笔為你收集整理的[Silverlight动画]转向行为 - 转向机车的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。