kit*_*une 1 c# unity-game-engine
我正在学习如何使用Unity3D.
我有这个场景,其中元素是两个PNG图像(两个黑色圆圈),我已将其与Rigidbody属性相关联(没有重力).
使用脚本我将水平轴的控制器关联起来并且它可以工作:我可以用键盘控制中心圆.
现在我试图联想一个恒定的力量.我的脚本如下.但它只能沿Y轴工作.我不能使它沿水平轴工作.
该脚本是:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CircleController : MonoBehaviour {
float MaxSpeed = 10f;
Rigidbody rigid2D;
public Vector3 tensor;
// Use this for initialization
void Start()
{
rigid2D = GetComponent<Rigidbody>();
rigid2D.AddForce(new Vector3(0,10,0), ForceMode.Force);
}
// Update is called once per frame
void FixedUpdate()
{
float move = Input.GetAxis("Horizontal");
rigid2D.velocity = new Vector2(move * MaxSpeed, rigid2D.velocity.y);
}
}
Run Code Online (Sandbox Code Playgroud)
有人能帮助我理解为什么我不能沿着这条轴施加力吗?
特别是,当我用这条指令执行脚本时:rigid2D.AddForce(new Vector3(0,10,0), ForceMode.Force);我看到中心圆向另一个方向移动.这是正确的.
相反,当我用这个指令执行它时,rigid2D.AddForce(new Vector3(10,0,0), ForceMode.Force);中心圆保持静止.
你在Start函数中调用以下行(执行一次)
rigid2D.AddForce(new Vector3(10,0,0), ForceMode.Force);
Run Code Online (Sandbox Code Playgroud)
它通过给定值(10)向右侧的刚体施加力.物理引擎计算应用于刚体的加速度,并自动计算每帧的velocity(速度)和新位置.
但是,在中FixedUpdate,您调用以下行
float move = Input.GetAxis("Horizontal");
rigid2D.velocity = new Vector2(move * MaxSpeed, rigid2D.velocity.y);
Run Code Online (Sandbox Code Playgroud)
在这里,您可以在水平轴上强制刚体的速度,从而覆盖物理引擎计算的值.如果不按输入管理器中定义的按钮,则圆将保持在水平轴上,因为move它等于0.
调用时rigid2D.AddForce(new Vector3(0,10,0), ForceMode.Force);,圆圈向上移动,因为rigid2D.velocity = new Vector2(move * MaxSpeed, rigid2D.velocity.y);速度保持在垂直轴上.
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |