所以我正在制作一款基于拼图的游戏,其中玩家必须使用Trampolines来检测玩家何时跳到它上面然后将它们弹回x高度。
但是目前我的代码目前无效并且说明错误
“无法修改'UnityEngine.Rigidbody.velocity'的返回值,因为它不是变量。”
想知道你们是否知道可以采取哪些措施来修复这些代码并让它能够达到其所需的目的。
using UnityEngine;
using System.Collections;
public class small_trampoline_bounce : MonoBehaviour {
bool willBounce = false;
float bounceHeight = 10;
public Transform Player;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if (willBounce)
{
Player.rigidbody.velocity.y = 0;
Player.rigidbody.AddForce (0, bounceHeight, 0, ForceMode.Impulse);
willBounce = false;
}
}
void OnCollisionEnter (Collision other)
{
if (other.gameObject.name == "Player")
{
willBounce = true;
}
}
}
答案 0 :(得分:1)
要解决您遇到的特定错误 - 由于速度是矢量,您无法修改返回的矢量并期望存储的矢量发生变化。如果你真的想直接设置速度,你需要设置整个矢量,而不仅仅是一部分:
Player.rigidbody.velocity = new Vector3(0, 0, 0);
如果你想保持以前的x和z速度,你可以这样做:
vector3 velocity = Player.rigidbody.velocity;
Player.rigidbody.velocity = new Vector3(velocity.x, 0, velocity.z);