提示コードのですがControlがカメラ、playerがプレイヤーにアタッチしています。見下ろし型のストラテジーゲームのカメラなのですが
コメント部の/////の内部のコードですがカメラがガタガタしてしまいます。座標を確認したところカメラの座標が動いているためなのですが
なぜカメラがガタガタするのでしょうか?
試したこと
playerのRigidbodyを外した。
誤差を疑い直接値を代入する形に変更して引き算による誤差をなくしてみました。
cs
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Player : MonoBehaviour 6{ 7 //方向 8 public Vector3 vec; 9 private Rigidbody rb; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 rb = GetComponent<Rigidbody>(); 15 vec = new Vector3(0, 0, 0); 16 } 17 18 // Update is called once per frame 19 void Update() 20 { 21 //Debug.Log(transform.position); 22 23 24 25 if(vec != new Vector3(0,0,0)) 26 { 27 Vector3 v = vec - transform.position; 28 vec.y = 0; 29 Quaternion look = Quaternion.LookRotation(vec,Vector3.up); 30 transform.localRotation = look; 31 rb.AddForce(vec.normalized * 1); 32 33 } 34 35 36 //Debug.Log(vec); 37 } 38 39} 40
cs
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Control : MonoBehaviour 6{ 7 //public GameObject obj; 8 private RaycastHit hit; 9 10 11 private GameObject player; //ゲームオブジェクト 12 private Player code; //ソースファイル名 13 14 // Start is called before the first frame update 15 void Start() 16 { 17 player = GameObject.Find("Ethan"); 18 code = player.GetComponent<Player>(); 19 } 20 21 22 23 24 // Update is called once per frame 25 void Update() 26 { 27////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 28 transform.position = new Vector3(player.transform.position.x - transform.position.x, transform.position.y, player.transform.position.z - transform.position.z); 29 30///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 31 32 33 34 35 //Debug.Log(transform.position); 36 37 38 RaycastHit hit; 39 int distance = 1000; 40 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 41 Debug.DrawLine(ray.origin, ray.direction * 1000, Color.red); 42 43 44 if (Input.GetMouseButtonDown(0)) 45 { 46 if (Physics.Raycast(ray, out hit, distance)) 47 { 48 code.vec = hit.point; 49 } 50 } 51 52 } 53 54 //オブジェクトを配置する 55 void PutObject() 56 { 57 RaycastHit hit; 58 int distance = 1000; 59 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 60 Debug.DrawLine(ray.origin, ray.direction * 1000, Color.red); 61 62 63 if (Input.GetMouseButtonDown(0)) 64 { 65 if (Physics.Raycast(ray, out hit, distance)) 66 { 67 Debug.Log(hit.point); 68 69 //Instantiate(obj, hit.point + new Vector3(0, obj.transform.localScale.y / 2, 0), obj.transform.rotation); 70 } 71 } 72 73 } 74 75 76} 77
/////の内部のコードによって実現したい動作は、どのようなものなのでしょうか?
回答2件
あなたの回答
tips
プレビュー