下面是我做的一個代碼示例:
public Boolean TouchingPlatformUpdater(Vector2 charapos){
int[] BasePlatforms = { Convert.ToInt16(platformapos1.X), Convert.ToInt16(platformapos1.Y), Convert.ToInt16(platformapos2.X), Convert.ToInt16(platformapos2.Y), Convert.ToInt16(platformapos3.X), Convert.ToInt16(platformapos3.Y), Convert.ToInt16(platformapos4.X), Convert.ToInt16(platformapos4.Y), Convert.ToInt16(platformapos5.X), Convert.ToInt16(platformapos5.Y), Convert.ToInt16(platformapos6.X), Convert.ToInt16(platformapos6.Y), Convert.ToInt16(platformapos7.X), Convert.ToInt16(platformapos7.Y), Convert.ToInt16(platformapos8.X), Convert.ToInt16(platformapos8.Y), Convert.ToInt16(platformapos9.X), Convert.ToInt16(platformapos9.Y), Convert.ToInt16(platformapos10.X), Convert.ToInt16(platformapos10.Y), Convert.ToInt16(platformapos11.X), Convert.ToInt16(platformapos11.Y), Convert.ToInt16(platformapos12.X), Convert.ToInt16(platformapos12.Y), Convert.ToInt16(platformapos13.X), Convert.ToInt16(platformapos13.Y), Convert.ToInt16(platformapos14.X), Convert.ToInt16(platformapos14.Y), Convert.ToInt16(platformapos15.X), Convert.ToInt16(platformapos15.Y) };
for (int Item = 0; Item < BasePlatforms.Length; Item = Item + 2)
{
try
{
if (charapos.X > BasePlatforms[Item] - 15 && charapos.X < BasePlatforms[Item] + 60 && charapos.Y > BasePlatforms[Item + 1] - 14 && charapos.Y < BasePlatforms[Item + 1])
{
return true;
}
}
catch { }
}
return false;
我的「玩家」是一個正方形等等都是平臺,但你可以做的更細的水平與腳區域和世界一樣的東西。它所做的是檢查玩家是否在單一平臺覆蓋的區域內。你必須找到一種方法來使曲線起作用。
總體而言,你的系統是非常錯誤的。只需交換我的概念或找到另一個使用。熱點的事情看起來不會太好。 Id雖然能夠爲你解決,但是你沒有提供任何代碼來幫助你解決問題。如果你在這個問題中得到了代碼,請告訴我[email protected]和我編輯我的答案。
下降時,增加了另一個熱點的球員,而不是在說,點你可以添加一個條件= X +(3/4)寬度(75%)和x +(1/4)寬度(25%)。所以只能在跳轉後添加熱點,並在登陸後刪除/忽略它們。 – Colton
@Colton我們應該深入探索你的想法。這是一個非常好的主意,但至少有一個問題:當角色會落在斜坡上時,他會像圖片一樣着地4. – Sharpnel
是的,你基本上試圖有兩種不同的物理定律,造成問題。一個想法是,你的像素角色真的會很大嗎?如果它更小,那麼很少有重疊就不會引人注目。例如,如果腿靠得更近。在這種情況下,一個好的選擇是專注於角色設計而不是編程。 (我認爲這是一個重要的考慮因素。改變設計可以使編程更加清潔。)我會繼續思考它。 – Colton