Unity-简单小游戏 控制小球(3)

创建食物 设置预制体

新建一个cube,设置它的长宽高为0.5,并将它旋转一下,使它看起来像立在地面上一样。

改名为Pick up,为它设置材质,因为食物要创建很多个,所以要为它创建预制体,新建一个prefabs文件夹,直接把Hierarchy窗口中的Pick up拖到刚刚创建的prefabs文件夹中,这样就为Pick up创建好了它的预制体。

当修改prefabs的时候,所有通过prefabs生成的游戏物体都会同步修改。

因为该物体旋转过,用它自身的坐标轴没办法在地面上平移,这时点击上方的按钮,从local变为global,变成世界坐标之后就可以平移复制的旋转过的物体了。

 复制足够的食物,新建一个空物体,把刚刚建好的所有食物拖动到空物体下,实现归类。

 编写食物旋转代码

 点击Pick up预制体,点击Add Component,输入pickUp,点击new script->add,就生成了一个新脚本了,把它归类到script文件夹中。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class pickUp : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(new Vector3(0,1,0));
    }
}

以上代码即可实现食物旋转效果。

碰撞检测

为pick up预制体增加一个tag名为pick up。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player : MonoBehaviour
{
    private Rigidbody rd;
    // Start is called before the first frame update
    void Start()
    {
        rd = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        rd.AddForce(new Vector3(h,0,v)*5);
    }
    void OnCollisionEnter(Collision collision)
    {
        if(collision.collider.tag=="pick up")
        {
            Destroy(collision.collider.gameObject);
        }
    }
}

获取碰撞到的游戏物体身上的collider组件,如果tag是pick up,那么销毁这个游戏物体,就可以实现小球吃食物的效果了,但是碰撞之后小球会出现一个小停顿,我们下次再说。

猜你喜欢

转载自blog.csdn.net/qq_64573579/article/details/127600219