- Home /
Mouse Look and Audio
Hello i am making a third person top down game, but there is a problem wth my scripts when i move my mouse my character doesnt follow correctly also when i shoot my gun its sounds like the audio is being repeated. Thanks in Advance
Camera
using UnityEngine; using System.Collections;
public class GameCamera : MonoBehaviour {
private Vector3 cameraTarget;
private Transform target;
void Start () {
target = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update () {
cameraTarget = new Vector3(target.position.x,transform.position.y,target.position.z);
transform.position = Vector3.Lerp(transform.position,cameraTarget,Time.deltaTime * 8);
}
}
Gun
using UnityEngine; using System.Collections;
[RequireComponent (typeof (AudioSource))] public class Gun : MonoBehaviour {
public enum GunType { Semi, Burst, Auto };
public GunType gunType;
public float rpm;
// Components
public Transform spawn;
private LineRenderer tracer;
// System:
private float secondsBetweenShots;
private float nextPossibleShootTime;
void Start() {
secondsBetweenShots = 60 / rpm;
if (GetComponent<LineRenderer>()) {
tracer = GetComponent<LineRenderer>();
}
}
public void Shoot() {
if (CanShoot())
{
Ray ray = new Ray(spawn.position, spawn.forward);
RaycastHit hit;
float shotDistance = 20;
if (Physics.Raycast(ray, out hit, shotDistance))
{
shotDistance = hit.distance;
}
nextPossibleShootTime = Time.time + secondsBetweenShots;
GetComponent<AudioSource>().Play();
if (tracer) {
StartCoroutine("RenderTracer", ray.direction * shotDistance);
}
}
}
public void ShootContinuous() {
if (gunType == GunType.Auto) {
Shoot ();
}
}
private bool CanShoot() {
bool canShoot = true;
if (Time.time < nextPossibleShootTime) {
canShoot = false;
}
return canShoot;
}
IEnumerator RenderTracer(Vector3 hitPoint) {
tracer.enabled = true;
tracer.SetPosition(0, spawn.position);
tracer.SetPosition(1, spawn.position + hitPoint);
yield return null;
tracer.enabled = false;
}
}
Player Controller
using UnityEngine; using System.Collections; using System;
[RequireComponent(typeof(CharacterController))] public class PlayerController : MonoBehaviour {
public float rotationSpeed = 450;
public float walkSpeed = 5;
public float runSpeed = 8;
// System
private Quaternion targetRotation;
// Components
public Gun gun;
private CharacterController controller;
private Camera cam;
void Start()
{
controller = GetComponent<CharacterController>();
cam = Camera.main;
}
void Update()
{
ControlMouse();
//ControlWASD();
if (Input.GetButtonDown("Shoot")) {
gun.Shoot();
}
else if (Input.GetButton("Shoot")) {
gun.ShootContinuous();
}
}
void ControlMouse()
{
Vector3 mousePos = Input.mousePosition;
mousePos = cam.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, cam.transform.position.y - transform.position.y));
targetRotation = Quaternion.LookRotation(mousePos);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotation.eulerAngles.y, rotationSpeed * Time.deltaTime);
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed : walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
void ControlWASD()
{
Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
if (input != Vector3.zero)
{
targetRotation = Quaternion.LookRotation(input);
transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle(transform.eulerAngles.y, targetRotation.eulerAngles.y, rotationSpeed * Time.deltaTime);
}
Vector3 motion = input;
motion *= (Mathf.Abs(input.x) == 1 && Mathf.Abs(input.z) == 1) ? .7f : 1;
motion *= (Input.GetButton("Run")) ? runSpeed : walkSpeed;
motion += Vector3.up * -8;
controller.Move(motion * Time.deltaTime);
}
}
I also made a video showing my problem : https://www.youtube.com/watch?v=1NzSF33t8fs&feature=youtu.be
Thank you
Your answer
Follow this Question
Related Questions
MouseLook script 90 degrees off 2 Answers
Disable MouseLook for dialogues 2 Answers
Disabling a script in runtime 2 Answers
Object Fallow Y axis ! 1 Answer