Этот код предназначен для платформы лифтового типа, где, как только игрок встает на нее, она «поднимает» игрока, добавляя к ней силу.
Дело в том, что пока создается сила, твердое тело (игрок) не движется при движении лифта. Код был написан на C # с использованием Unity 5. В коде игроку назначается общедоступный 'rb' и он содержит жесткое тело. Анимация - это простой анимационный клип, который перемещает лифт вверх. Любые идеи? Заранее спасибо за ваше время и ответы.
Лифт кинематический, а игрок - нет.
using UnityEngine;
using System.Collections;
/*This script activates when the player steps on the elevator, as it takes them up a floor.*/
public class ElevatorMovementScript : MonoBehaviour
{
private bool elevatorUp = false;
public Animation anim;
public int elevatorDelay = 5;
public int force = 800;
public Rigidbody rb;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animation>();
}
// Update is called once per frame
void Update ()
{
}
/*Checks if the player has stepped onto the elevator. If the player has, it waits five seconds, and then pushes the player up.*/
void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Player" && !elevatorUp)
{
Invoke("AnimationPlay",elevatorDelay);
elevatorUp = true;
}
}
/*Plays the animation of the player going up. Used for the 'Invoke' method.*/
void AnimationPlay()
{
rb.AddForce(transform.up * force);
Debug.Log (transform.up * force);
anim.Play ("Up");
}
}
force
? Во многих случаях, если твердое тело не двигается, это связано с тем, что величина силы слишком мала. - person Venkat at Axiom Studios   schedule 15.09.2015AddForce
для этого. Вместо этого вам следует переместить лифт. Я не знаю, перемещает ли анимация Unity объекты так, как работает физика: вы можете использоватьVector3.Lerp
в качестве временной (или постоянной) замены. - person 31eee384   schedule 15.09.2015