예제 #1
0
파일: Walker.cs 프로젝트: talford2/Destroy2
    public override void LiveUpdate()
    {
        var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre());

        pitchTarget = lookAngle.eulerAngles.x;
        yawTarget   = lookAngle.eulerAngles.y;

        fallSpeed += -9.81f * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        // Locomotion
        var speed       = Mathf.Clamp(Mathf.Abs(move.z) + Mathf.Abs(move.x), 0f, 1f);
        var turnSpeed   = 2f * speed;
        var strafeAngle = Mathf.Atan2(move.x, move.z) * Mathf.Rad2Deg;

        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget + strafeAngle, 0f), turnSpeed * Time.deltaTime);

        headAimYaw = Mathf.LerpAngle(headAimYaw, yawTarget - transform.eulerAngles.y, 5f * Time.deltaTime);

        var targetTurretPitch = Quaternion.LookRotation(aimAt - TurretTransform.position);

        turretAimAngle = Quaternion.Lerp(turretAimAngle, targetTurretPitch, 5f * Time.deltaTime);

        meshAnimator.SetFloat("Speed", speed);
    }
예제 #2
0
    public override void LiveUpdate()
    {
        var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre());

        pitchTarget = Mathf.LerpAngle(pitchTarget, lookAngle.eulerAngles.x, 5f * Time.deltaTime);
        yawTarget   = Mathf.LerpAngle(yawTarget, lookAngle.eulerAngles.y, 5f * Time.deltaTime);

        fallSpeed += -9.81f * Time.deltaTime;
        velocity   = Vector3.up * fallSpeed;

        if (controller.isGrounded)
        {
            fallSpeed = 0f;
        }

        controller.Move(velocity * Time.deltaTime);
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget, 0f), 25f * Time.deltaTime);
        // Locomotion
        meshAnimator.SetBool("IsAim", !isRunning);
        meshAnimator.SetFloat("Speed", move.z);
        meshAnimator.SetFloat("VerticalSpeed", move.z);
        meshAnimator.SetFloat("HorizontalSpeed", move.x);
        meshAnimator.SetBool("IsCrouched", isCrouching);

        if (isCrouching)
        {
            controller.height = 1.2f;
            controller.center = new Vector3(0, 0.6f, 0);
        }
        else
        {
            controller.height = 1.5f;
            controller.center = new Vector3(0, 0.85f, 0);
        }
    }
예제 #3
0
파일: Pod.cs 프로젝트: talford2/Destroy2
    public override void LiveUpdate()
    {
        // steering facing direction
        var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre());

        yawTarget          = Mathf.LerpAngle(yawTarget, lookAngle.eulerAngles.y, 5f * Time.deltaTime);
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget, 0f), 25f * Time.deltaTime);

        Speed += acceleration * Time.deltaTime;

        transform.position += Speed * Vector3.down * Time.deltaTime;

        HeadsUpDisplay.Current.HideCrosshair();
        var        hitRay = new Ray(transform.position, Vector3.down);
        RaycastHit hit;

        if (Physics.Raycast(hitRay, out hit, 20f, LayerMask.GetMask("Player")))
        {
            var inviisbleDestruct = hit.collider.GetComponentInParent <InvisibleDestruct>();
            if (inviisbleDestruct != null)
            {
                Destroy(inviisbleDestruct.gameObject);
            }
        }

        if (Physics.Raycast(hitRay, out hit, Mathf.Abs(Speed * Time.deltaTime + 0.5f), LayerMask.GetMask("Terrain", "Player")))
        {
            transform.position = hit.point;
            WorldSounds.PlayClipAt(transform.position, LandSounds[Random.Range(0, LandSounds.Count)]);
            Land();
            Instantiate(LandEffectPrefab, transform.position, Quaternion.identity);
            TriggerSpawner.TriggerAndDestroy(VehiclePrefab, WeaponPrefab, 0.3f);
            Targeting.RemoveTargetable(Team.Good, GetComponent <Killable>());
            Destroy(this);
        }
    }