Unity - 放置前更改立方体颜色

时间:2014-04-13 18:05:41

标签: unity3d

所以,我正在制作类似Minecraft的游戏,你基本上在预先生成的地板上移动并放置块。我的问题是我需要让玩家通过点击数字键来改变块颜色,ex:1表示红色,2表示蓝色,依此类推。

这是生成楼层并处理块放置的脚本。

var range : float = Mathf.Infinity;
var hit : RaycastHit;

for (var y = -4; y < 50; ++y)
for (var x = -4; x < 50; ++x) {
    var block : GameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);
    block.transform.position = transform.position + Vector3(x, -3, y);
}

function Update () {
    if (Input.GetMouseButtonDown(0) && Hit()) {
        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        cube.transform.position = hit.transform.position + hit.normal;
    }
    if (Input.GetMouseButtonDown(1) && Hit())
        Destroy(hit.transform.gameObject);

    if (Input.GetKeyDown(KeyCode.Keypad1)) {
        cube.renderer.material.color = Color.red;
    }
    if (Input.GetKeyDown(KeyCode.Keypad2)) {
        cube.renderer.material.color = Color.blue;
    }
    if (Input.GetKeyDown(KeyCode.Keypad3)) {
        cube.renderer.material.color = Color.yellow;
    }
    if (Input.GetKeyDown(KeyCode.Keypad4)) {
        cube.renderer.material.color = Color.green;
    }
    if (Input.GetKeyDown(KeyCode.Keypad5)) {
        cube.renderer.material.color = Color.magenta;
    }
}

function Hit() : boolean {
    return Physics.Raycast(transform.position, transform.forward, hit, range, 1);
}

0 个答案:

没有答案