Unity绘制圆半径内随机点

这篇博客介绍了如何在Unity中实现生成圆半径内的随机点。博主提出的方法是通过生成随机长度的单位向量,再进行角度旋转来达到目的。这种方法在机试中被证明有效,并展示了实际的编程代码。
摘要由CSDN通过智能技术生成

Unity绘制圆半径内随机点<25/11/2017>

实现原理:先给随机的长度并取单位向量,然后旋转随机的角度,即可生成达成命题,绘制圆半径内随机点(这是博主帮人机试时突然闪现出的解决方案,哈哈哈!简直完美!!!老夫聊发少年狂,左牵黄右......)

实际效果如下:


CodingLikeAGod脚本代码如下:(挂相机,创建一个Sphere放原点作为spherePrefab和center中心点)


                
Unity中,我们可以使用自定义脚本来为Button绘制角外边框。以下是一个简单的示例: 1. 首先,创建一个空的GameObject并将其命名为"RoundButton"。 2. 在RoundButton上添加一个Button组件,以便我们能够使用Unity的UI系统。 3. 创建一个新的C#脚本,将其命名为"RoundButtonScript"。 4. 在RoundButtonScript中添加以下代码: ```csharp using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Image))] public class RoundButtonScript : MonoBehaviour { public int cornerRadius = 10; // 半径 private Image buttonImage; void Awake() { buttonImage = GetComponent<Image>(); DrawRoundBorder(); } void DrawRoundBorder() { // 获取Button的RectTransform组件 RectTransform rectTransform = GetComponent<RectTransform>(); // 创建一个带角的Sprite Sprite borderSprite = CreateRoundBorderSprite(rectTransform.sizeDelta); // 将Sprite设置为Button的背景图像 buttonImage.sprite = borderSprite; } Sprite CreateRoundBorderSprite(Vector2 size) { // 创建一个新的纹理 Texture2D texture = new Texture2D((int)size.x, (int)size.y); // 循环遍历纹理像素,根据半径绘制角外边框 for (int x = 0; x < size.x; x++) { for (int y = 0; y < size.y; y++) { if (IsInRoundCorner(x, y, size)) { texture.SetPixel(x, y, Color.black); } else { texture.SetPixel(x, y, Color.clear); } } } // 应用修改后的纹理 texture.Apply(); // 创建一个新的Sprite并返回 Sprite sprite = Sprite.Create(texture, new Rect(0, 0, size.x, size.y), new Vector2(0.5f, 0.5f)); return sprite; } bool IsInRoundCorner(int x, int y, Vector2 size) { float centerX = Mathf.Clamp(x, cornerRadius, size.x - cornerRadius); float centerY = Mathf.Clamp(y, cornerRadius, size.y - cornerRadius); float distX = centerX - x; float distY = centerY - y; return (distX * distX) + (distY * distY) <= (cornerRadius * cornerRadius); } } ``` 5. 将RoundButtonScript脚本附加到RoundButton对象上,并在cornerRadius变量中设置所需的半径值。 6. 运行游戏,你会看到Button上绘制了一个具有角边框的形外形。 这就是使用Unity为Button绘制角外边框的简单方法。你可以根据需要修改脚本中的参数来获得不同的效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值