U_类似飞毯载人运动的实现
类似飞毯载人运动的实现
using System;
using UnityEngine;
public class FlyingCarpetMove : MonoBehaviour {
public float t;
public bool dir;
public float speed;
public float cubeSpeed;
public GameObject MoveWithItem;
private Vector3 off;
private float tempT;
private void Start() {
off = transform.position - MoveWithItem.transform.position;
}
void Update() {
// 飞毯移动
MoveEvent();
// 伴随移动
MoveWith();
}
private void MoveEvent() {
if (tempT < t) {
if (dir) {
transform.Translate(transform.forward * speed);
} else {
transform.Translate(-transform.forward * speed);
}
tempT += Time.deltaTime;
} else {
dir = !dir;
tempT = 0;
}
}
private void MoveWith() {
var tempOff = transform.position - MoveWithItem.transform.position;
if (tempOff != off) {
MoveWithItem.transform.position = transform.position - off;
}
if (Input.GetKey(KeyCode.W)) {
transform.Translate(transform.forward * cubeSpeed);
}
if (Input.GetKey(KeyCode.S)) {
transform.Translate(-transform.forward * cubeSpeed);
}
if (Input.GetKey(KeyCode.A)) {
transform.Translate(-transform.right * cubeSpeed);
}
if (Input.GetKey(KeyCode.D)) {
transform.Translate(transform.right * cubeSpeed);
}
off = transform.position - MoveWithItem.transform.position;
}
}


浙公网安备 33010602011771号