Этот код предназначен для платформы лифтового типа, где, когда игрок стоит на нем, он «захватывает» игрока, добавляя к нему силу.Несмотря на то, что Force Applied, No Movement
Дело в том, что при создании силы жесткое тело (игрок) не перемещается при движении лифта. Код был написан на 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'? Во многих случаях, если жесткое тело не перемещается, это связано с тем, что количество сил слишком низкое. –
Если это действительно движущаяся платформа, вам следует, скорее всего, использовать кинематическую жесткость, а не применять силу. Это заставит платформу вести себя как платформа. – 31eee384
@VenkatatAxiomStudios - я установил силу до 500, а затем до 5 000 000 это не повлияло. – user3280790