Ios SCNNode:每个单独节点的随机颜色,不是全部斯威夫特,斯切内基特
如果我有一个函数,每当用户点击屏幕并更改多维数据集的颜色时,就会在前一个多维数据集旁边生成一个多维数据集,那么我如何确保每个多维数据集都可以成为随机颜色,而不是所有的多维数据集都成为相同的随机颜色?我不认为我可以对每个立方体使用相同的几何体,因为这样它将继承我最初提供给它的任何材质。我希望生成的每个立方体选择它自己的随机颜色,而不是所有立方体选择它在点击时选择的相同随机颜色。我有一个随机颜色函数,它可以工作。但是如果我生成5个立方体,点击屏幕,所有5个立方体都会变成相同的随机颜色。但是,我希望每个立方体都是它自己的随机颜色。我正在使用Swift和SceneKit。提前谢谢你的帮助Ios SCNNode:每个单独节点的随机颜色,不是全部斯威夫特,斯切内基特,ios,swift,random,colors,scenekit,Ios,Swift,Random,Colors,Scenekit,如果我有一个函数,每当用户点击屏幕并更改多维数据集的颜色时,就会在前一个多维数据集旁边生成一个多维数据集,那么我如何确保每个多维数据集都可以成为随机颜色,而不是所有的多维数据集都成为相同的随机颜色?我不认为我可以对每个立方体使用相同的几何体,因为这样它将继承我最初提供给它的任何材质。我希望生成的每个立方体选择它自己的随机颜色,而不是所有立方体选择它在点击时选择的相同随机颜色。我有一个随机颜色函数,它可以工作。但是如果我生成5个立方体,点击屏幕,所有5个立方体都会变成相同的随机颜色。但是,我希望每
func randomColor2() -> UIColor{
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}
现在我只是说,我的内心开始接触:
boxNodeMaterial.diffuse.contents = randomColor2
我还调用了createBox函数,它在原始框的旁边添加了另一个框节点。我想让第二个盒子选择它自己的随机颜色,而不是原来的颜色。我希望对添加的每个框继续执行此操作。框1可以是红色、绿色或蓝色。框2可以是红色、绿色或蓝色,框3等等。不是框1、框2、框3。例如,选择红色并使其颜色相同。您似乎创建了多个
scngometry
,但它们共享相同的材质。
这将导致您描述的问题:更改一种材质的颜色将更改为所有长方体的颜色
为了避免这种情况,每次创建新框时,只需创建一个新的scnmatary
//Create a new, unique material for each box
let material = SCNMaterial()
material.diffuse.contents = randomColor2()
//Copy the box (or create a new one)
let newBox = oldBox.copy()
newBox.firstMaterial = material
您似乎创建了多个
scngometry
,但它们都共享相同的材料。
这将导致您描述的问题:更改一种材质的颜色将更改为所有长方体的颜色
为了避免这种情况,每次创建新框时,只需创建一个新的scnmatary
//Create a new, unique material for each box
let material = SCNMaterial()
material.diffuse.contents = randomColor2()
//Copy the box (or create a new one)
let newBox = oldBox.copy()
newBox.firstMaterial = material