尽管施加了力量,但没有运动

时间:2015-09-15 01:36:50

标签: c# unity3d rigid-bodies unity5

此代码适用于电梯式平台,一旦玩家站在其上,它就会采取“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");
    }
}

1 个答案:

答案 0 :(得分:0)

看起来这个脚本在你电梯的游戏对象上,在这种情况下这一行:

rb.AddForce(transform.up * force);

试图向电梯施加力,而不是玩家。你必须跟踪玩家的刚性,或者以某种方式在AnimationPlay中按需获取。

你说那个

  

为玩家分配公共'rb'

但是rb = GetComponent<Rigidbody>();会忽略这一点并使用附加到ElevatorMovementScript附加到的游戏对象的刚体。