[Idle Game] Cách tạo Button mua 1/10/100/Max Object
Chào anh chị, chả là em đang làm một cái idle game. Nếu anh chị nào ko biết có thể search google ạ. Cơ cấu của nó thì dạng như, lúc đầu bạn sẽ phải click để lấy Resources, sau đó dùng Resource để mua những Object , và những Object này sẽ tạo ra thêm Resources , …
Mua 1, thì mất X resource, Count của Object đó sẽ tăng thêm 1 và Object đó generate 1 resource/s.
Mua 10, mất 10X resource, Count +=10, generate 10/s
Mua 1/10/100 thì em đã làm được, nhưng ở 1000, giá của object hiển thị lại là “Infinity” trong khi nếu tính ra thì nó chỉ mất khoảng E41 đơn vị, trong khi em dùng kiểu Double lên đến E308. Chả hiểu nỗi luôn ạ
Cost = Mathf.Round ((float)BaseCost * Mathf.Pow ((float)Multiplier, Count));
Em đã check thì đây chắc chắn là đoạn khiến Cost >=E308, khi Count >=907 thì Cost sẽ lớn hơn kiểu double.
Ngoài ra: Buy Max object thì làm ntn ạ ? Về thật toán ấy.
Nguyên lý của nó là : Ví dụ bạn có 100 gold, mỗi object A mua cần 15 gold, thì khi bật buy max button, bạn sẽ mua được 6 object
m ko hiểu E41 hay E308 lắm
Buy max Obj
int userGold;
int costItem;
int BuyMax(){
return userGold / costItem;
}
Ví dụ như là E3 là 1000 đó anh, E6 là 1 triệu, …
CostItem sẽ tăng dần khi mua môtj Object nha, nên nếu làm vậy vẫn ko đươc anh ạ Mua 900 cái là nó lại maxout E308 ngay
theo mình bạn đưa class gây ra lỗi lên đây thì hơn. Và lỗi nó báo như nào để mn xem
Dạ không có lỗi , code thì em đã đưa ở trên, dòng đó nếu count >=907 thì Cost sẽ max Double value, mà nếu tính thông thường thì mới chỉ được 1/10 độ lớn của kiểu thôi
Float chỉ đến 10^38 là hết rồi bạn, double mới 10^308.
Nếu count là int thì biểu thức sẽ tính theo float do bạn cast về float. Vậy máy tính đúng rồi.
Trời ơi, cảm ơn bác nhiều. Chính xác quá