VR飞机项目2016/9/19-25获取按键输入(虚拟按键等)

     通过虚拟摇杆控制飞机的左右上下,这次没有使用控制rotation上的xyz3个轴的值来实现,而是通过每帧增加一个增量来实现

mainRot = this.transform.rotation;.
AddRot.eulerAngles = new Vector3 (pitch, yaw, -roll);
mainRot *= AddRot;
transform.rotation = Quaternion.Lerp (transform.rotation, mainRot, Time.fixedDeltaTime * RotationSpeed);

<span style="white-space:pre">	</span>public void AxisControl (Vector2 axis)
	{
		if (SimpleControl) {
			LimitAxisControl.y = LimitAxisControl.x;	
		}
		roll = Mathf.Lerp (roll, Mathf.Clamp (axis.x, -LimitAxisControl.x, LimitAxisControl.x) * SpeedRoll, Time.deltaTime);
		pitch = Mathf.Lerp (pitch, Mathf.Clamp (axis.y, -LimitAxisControl.y, LimitAxisControl.y) * SpeedPitch, Time.deltaTime);
	}
<span style="white-space:pre">	</span>public void TurnControl (float turn)
	{
		yaw += turn * Time.deltaTime * SpeedYaw;
	}
flight.AxisControl (new Vector2 (Input.GetAxis ("Mouse X"), Input.GetAxis ("Mouse Y")));
flight.TurnControl(Input.GetAxis("VirtualAxisX"));
flight.TurnControl (Input.GetAxis ("Horizontal"));


如果想要固定某个轴,不让在这个轴上旋转,可以以下代码实现,实现固定某个轴

if (SimpleControl) {
  Quaternion saveQ = mainRot;    <span style="color:#009900;">//先用saveQ记录下来这一帧的Quaternion
 //再记录下这一帧的angle</span>
  Vector3 fixedAngles = new Vector3 (mainRot.eulerAngles.x, mainRot.eulerAngles.y, mainRot.eulerAngles.z);

  if(FixedX)   <span style="color:#009900;">//bool值,如果固定X轴,就让angle对应的值为1</span>
  fixedAngles.x = 1;
  if(FixedY)
  fixedAngles.y = 1;
  if(FixedZ)
  fixedAngles.z = 1;
 <span style="color:#009900;">//算出固定轴以后的Quaternion,然后让物体从现在的Quaternion旋转到固定某个轴以后的Quaternion</span>
  saveQ.eulerAngles = fixedAngles;

  mainRot = Quaternion.Lerp (mainRot, saveQ, Time.fixedDeltaTime * 2);
  }


获取虚拟按键的方法

public void DetectPressedKeyOrButton()
    {
        foreach (KeyCode kcode in Enum.GetValues(typeof(KeyCode)))
        {
            if (Input.GetKeyDown(kcode))
            {
                Debug.Log("KeyCode down: " + kcode);
            }
        }
    }

使用了刚体的子弹,想让子弹朝目标有偏差的设计,可以用以下方法

Vector3spread = newVector3(Random.Range(-Spread, Spread), Random.Range(-Spread, Spread), Random.Range(-Spread, Spread)) / 100;
Vector3 direction = this.transform.forward + spread;
GameObject bullet = (GameObject)Instantiate(Missile, missileposition, missilerotate);
bullet.transform.forward = direction;





cd C:\Program Files\FlightGear fgfs --fg-root=C:\Program Files\FlightGear\data --aircraft=ufo --in-air --fdm=null --telnet=5501 --telnet=5502 --telnet=5503 --disable-ai-traffic --disable-real-weather-fetch --disable-random-objects --disable-terrasync --disable-clouds --disable-sound --disable-panel --disable-hud --disable-specular-highlight --timeofday=noon --prop:/sim/rendering/multi-sample-buffers=1 --prop:/sim/rendering/multi-samples=2 --prop:/sim/rendering/draw-mask-clouds=false --prop:/sim/rendering/draw-mask-terrain=true --prop:/sim/rendering/draw-mask-objects=true --prop:/sim/rendering/draw-mask-lights=true --prop:/sim/rendering/draw-mask-internal=true --prop:/sim/rendering/draw-mask-cockpit=true --prop:/sim/rendering/draw-mask-effects=true --prop:/sim/rendering/draw-mask-overlay=true --prop:/sim/rendering/draw-mask-world=true --prop:/sim/rendering/draw-mask-panel=true --prop:/sim/rendering/draw-mask-vr=true --prop:/sim/rendering/draw-mask-2d=true --prop:/sim/rendering/draw-mask-3d=true --prop:/sim/rendering/draw-mask-sky=true --prop:/sim/rendering/draw-mask-shadows=true --prop:/sim/rendering/draw-mask-cabin=true --prop:/sim/rendering/draw-mask-weather=true --prop:/sim/rendering/draw-mask-stereo=true --prop:/sim/rendering/draw-mask-internal-cockpit=true --prop:/sim/rendering/draw-mask-internal-windows=true --prop:/sim/rendering/draw-mask-internal-instruments=true --prop:/sim/rendering/draw-mask-internal-overlay=true --prop:/sim/rendering/draw-mask-internal-effects=true --prop:/sim/rendering/draw-mask-internal-lights=true --prop:/sim/rendering/draw-mask-internal-world=true --prop:/sim/rendering/draw-mask-internal-panel=true --prop:/sim/rendering/draw-mask-internal-3d=true --prop:/sim/rendering/draw-mask-internal-sky=true --prop:/sim/rendering/draw-mask-internal-cabin=true --prop:/sim/rendering/draw-mask-internal-weather=true --prop:/sim/rendering/draw-mask-internal-stereo=true --prop:/sim/rendering/draw-mask-internal-shadow=true --prop:/sim/rendering/draw-mask-internal-stall=true --prop:/sim/rendering/draw-mask-internal-aoa=true --prop:/sim/rendering/draw-mask-internal-thermal=false --prop:/sim/rendering/draw-mask-internal-ice=false --prop:/sim/rendering/draw-mask-internal-glass=true --prop:/sim/rendering/draw-mask-internal-dead=true --prop:/sim/rendering/draw-mask-internal-reflection=true程序显示错误unknown command-line option: enable-hud-2d怎么解决
05-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值