【发布时间】:2014-05-28 07:10:52
【问题描述】:
我的统一游戏是弹簧,当您按住空格键时,弹簧会向后移动。当您松开空格键时,弹簧会根据按住空格键时产生的扭矩大小而释放。
当它被释放时,弹簧刚好在球体内重叠,我需要球根据 Power 变量中的功率量更快或更慢地向前移动。
我不能使用 Rigidbody.Addforce,因为弹簧需要使球移动。
脚本注释:
-> 如果弹簧完全伸出(释放),它的值应该是 -2 如果它保持在最大扭矩,它的 x 轴值应该是 -2.2
using UnityEngine;
using System.Collections;
public class SpringMechanics : MonoBehaviour {
public bool SpringIn;
public float Power;
public bool SpringReleased;
void Update()
{
// IF THE SPRINGS X POSITION IS AT -2 OR ABOVE THAT VALUE IT WILL MARK THE SPRING IN VARIBALE AS TRUE
if (transform.position.x >=-0.5f)
{
SpringIn = false;
}
else
{
SpringIn = true;
}
//CHECKS IF MOUSE SPACE BUTTON IS DOWN AND IF SO MOVES SPRING IN
if (Input.GetKey (KeyCode.Space) && transform.position.x <= 2.3) {
Debug.Log ("Spring Being Compressed");
// Moves Spring Backwards when space key is down
//rigidbody.velocity = new Vector3(rigidbody.velocity.x - 0.05f * Time.deltaTime,rigidbody.velocity.y,rigidbody.velocity.z);
transform.position = (new Vector3 (transform.position.x - 0.05f * Time.deltaTime, transform.position.y, transform.position.z));
// Adds 3 Units Of Power Every Second While Key Is Down
Power += 2 * Time.deltaTime;
}
//Releases Ball When Space Bar Is Up After Being Down
if (Input.GetKeyUp (KeyCode.Space))
{
SpringReleased = true;
}
if (SpringReleased == true)
{
FireBall();
}
}
//When Firing Ball Executer Below Function
void FireBall()
{
if (transform.position.x <= -2){
rigidbody.velocity = new Vector3(rigidbody.velocity.x + Power * Time.deltaTime,rigidbody.velocity.y,rigidbody.velocity.z);
//transform.position = (new Vector3 (transform.position.x + Power * Time.deltaTime, transform.position.y, transform.position.z));
transform.position = (new Vector3 (-2, transform.position.y, transform.position.z));
if (transform.position.x >= -2 && SpringReleased == true){
SpringReleased=false;
Power = 0;
rigidbody.velocity = new Vector3(0,0,0);
Debug.Log ("Reset Spring");
}
}
}
}
如何根据功率变量的值使用弹簧将其向右击打?
【问题讨论】:
-
有人知道我可以在这里做什么吗?
-
取决于,你的问题是什么?
-
@TimCastelijns 我的统一游戏是一个弹簧,当您按住空格键时,弹簧会向后移动。当您释放空格键时,弹簧会根据按住空格键时产生的扭矩量释放。当它被释放时,弹簧刚好在球体内重叠,我需要球更快或更慢地向前移动,具体取决于 Power 变量中的功率量。我不能使用 Rigidbody.Addforce,因为弹簧需要使球移动。
-
我读了那部分,但我没有看到任何问题
-
@TimCastelijns 如何根据功率变量的值使用弹簧将其向前击中。