此代码适用于电梯式平台,一旦玩家站在其上,它就会采取“takes”。通过在其上添加力量来增加玩家。
事实是,当力量产生时,刚体(玩家)在电梯移动时不会移动。代码是用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");
}
}
答案 0 :(得分:0)
看起来这个脚本在你电梯的游戏对象上,在这种情况下这一行:
rb.AddForce(transform.up * force);
试图向电梯施加力,而不是玩家。你必须跟踪玩家的刚性,或者以某种方式在AnimationPlay
中按需获取。
你说那个
为玩家分配公共'rb'
但是rb = GetComponent<Rigidbody>();
会忽略这一点并使用附加到ElevatorMovementScript
附加到的游戏对象的刚体。