本文已参与「新人创作礼」活动,一起开启掘金创作之路
上次第一次玩Unity 3D,今天继续玩,跟大佬学Unity!
发现上次虽然做了一些东西,但和大佬要求的不一样,所以就准备重做
调整为这样,然后添加刚体
好耶!!!可以成功下降,那就继续学习下一步
这是效果图,现在可以动了,实现的效果是,刚体从上面的台阶,慢慢往下跌落,代码在这,大家可以自己试试
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使其向左向右移动,增加游戏难度
左边代码
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自己开始移动了。
那么我们怎样才能做到Player落在Cube上,Cube就停止移动呢?
所以问题来了,我们怎样判断Player是否落在Cube上了呢?
所以,我们要让Cube可以进行判断,那就是为Cube添加碰撞器。 在我们新建Cube的时候,Unity会自动为Cube添加一个Box Collider, 那么我们需要做的就是将Is Trigger选上,这个是触发器。
累了,还有挺多bug的,先这样吧,休息休息(手动狗头)