在电子游戏中移动平台可谓是十分常见的,如平台从一处至另一处的来回移动,或当需要玩家触发机关时,平台浮动并按一定的路线移动至目标处。本文主要是在Unity3D引擎下使用少量脚本实现两点之间来回移动平台的最基本功能,是一种比较简单且好理解的移动平台解决方案。
涉及到的点如下:
- 平台对象的实现
- 平台移动路线的设定
- 处于平台上游戏对象(如:玩家)的相对运动
创建平台控制对象
创建一个空对象,命名为PlatformObject,保证其transform.scale为默认值(1,1,1),为其添加Box Collider组件,Is Trigger设为True,添加一个脚本,命名为PlatformController.cs,需要提出的是,该对象不是平台的实体,而是主要用于控制平台实体的移动和实现相对运动。
创建平台实体对象
使用方块构建平台的外形,在对象PlatformObject下新建一个cube子对象,命名为Platform,该子对象才是平台的实体,并适当的设置cube的transform.scale属性,调整方块的长宽高,并为其添加一个Box Collider组件,平台的其他属性可自行设置。
如下:
设置父对象的Box Collider的size与子对象的scale一致,借此来保证父对象的碰撞范围与平台实体的大小一致。
实现平台控制
编辑PlatformController.cs脚本,以下代码主要实现:平台在两点之间来回移动并在到达两点时适当停留的功能,以及保证平台上的其他游戏对象相对于平台运动的功能。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 来回移动平台的控制
/// </summary>
public class PlatformController : MonoBehaviour {
[Tooltip("平台移动的结束位置")]
public Vector3 stopPosiiton;
[Tooltip("平台移动一次的时间")]
public float moveTime = 1f;
[Tooltip