Unity开始学习的第二天!!!(突然更新)

247 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

上次第一次玩Unity 3D,今天继续玩,跟大佬学Unity!

发现上次虽然做了一些东西,但和大佬要求的不一样,所以就准备重做

image.png

调整为这样,然后添加刚体

image.png

好耶!!!可以成功下降,那就继续学习下一步

image.png

这是效果图,现在可以动了,实现的效果是,刚体从上面的台阶,慢慢往下跌落,代码在这,大家可以自己试试

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class li : MonoBehaviour
{
 
    public float MoveSpeed = 8f;
 
    void Start()
    {
 
    }
    void Update()
    {
        //如果按下W或上方向键
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            MoveForward();
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            MoveBack();
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            MoveLeft();
        }
        if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            MoveRight();
        }
    }
 
    void MoveForward()
    {
        this.transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime);
    }
    void MoveBack()
    {
        this.transform.Translate(Vector3.back * MoveSpeed * Time.deltaTime);
    }
    void MoveLeft()
    {
        this.transform.Translate(Vector3.left * MoveSpeed * Time.deltaTime);
    }
    void MoveRight()
    {
        this.transform.Translate(Vector3.right * MoveSpeed * Time.deltaTime);
    }
}

之后设置floor使其向左向右移动,增加游戏难度

image.png

左边代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class LeftCubeMove : MonoBehaviour
{
    //定义Cube的初始移动速度
    public float CubeSpeed = 1f;
 
    void Start()
    {
 
    }
 
    void Update()
    {
        //使Cube的移动速度每一帧都增加
        CubeSpeed += 0.1f;
        //使Cube以CubeSpeed为速度向左移动
        this.transform.Translate(Vector3.left * CubeSpeed * Time.deltaTime);
 
    }
}

右边代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class RightCubeMove : MonoBehaviour
{
    //定义Cube的初始移动速度
    public float CubeSpeed = 1f;
 
    void Start()
    {
 
    }
 
    void Update()
    {
        //使Cube的移动速度每一帧都增加
        CubeSpeed += 0.1f;
        //使Cube以CubeSpeed为速度向右移动
        this.transform.Translate(Vector3.right * CubeSpeed * Time.deltaTime);
 
    }
}

加在哪个floor上就看自己喜好吧,我选的是第二和第三个

然后将这两个脚本分别托给相应的Cube,运行游戏,可以看到Cube自己开始移动了。

image.png

那么我们怎样才能做到Player落在Cube上,Cube就停止移动呢?

所以问题来了,我们怎样判断Player是否落在Cube上了呢?

所以,我们要让Cube可以进行判断,那就是为Cube添加碰撞器。 在我们新建Cube的时候,Unity会自动为Cube添加一个Box Collider, 那么我们需要做的就是将Is Trigger选上,这个是触发器。

image.png

累了,还有挺多bug的,先这样吧,休息休息(手动狗头)