質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

821閲覧

unityで玉転がし

miiichat

総合スコア72

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2017/06/10 13:56

編集2017/06/10 14:31

###わからないこと
unityで玉転がしを作りました。

ステージから落ちるとスタート地点へ戻るようにしました。

しかし、坂で落ちるとスタート地点に戻った後、謎の力で押されます。

平らなところで落ちるとそのようなことは起こりません。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 3.0f; int count = 0; void OnCollisionEnter (Collision col) { if ( col.gameObject.CompareTag ("Goal")){ Debug.Log("GOAL!"); } } void Update () { Vector3 pos = transform.position; if (pos.y < -10){ count++; Debug.Log(count); pos.x = 0; pos.y = 1.5f; pos.z = 0; transform.position = pos; } if (Input.GetKey ("up")) { transform.position += new Vector3(0,0,speed*Time.deltaTime); } if (Input.GetKey ("down")) { transform.position += new Vector3(0,0,-speed*Time.deltaTime); } if (Input.GetKey ("left")) { transform.position += new Vector3(-speed*Time.deltaTime,0,0); } if (Input.GetKey ("right")) { transform.position += new Vector3(speed*Time.deltaTime,0,0); } } }

イメージ説明

回答いただけるととてもうれしいです。
宜しくお願い致します。

###追記

The referenced script on this Behaviour is missing!
The referenced script on this Behaviour (Game Object 'player') is missing!

このような警告が出ていました。

あと、坂を上るだけで、落ちなくとも押されてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

坂で落ちると再開後押される

多分慣性が働き続けているのだと思います。

スタート地点に移動させた後の処理に
rigidbody.velocity = Vector3.zero;
rigidbody.angularVelocity = Vector3.zero;
上記2行を追加してください。
(明示的に物理演算の速度と回転速度をゼロにすることで慣性を無くしています)

警告

[Unity] Behaviour is missing! の原因オブジェクトの見つけ方-be-style
こちらをご覧ください。
(見慣れない警告文を見付けたらまずはそのフレーズで検索すると早く解決出来ます)

坂を上るだけで、落ちなくとも押される

「落ちなくても押される」の意味がよく分かりませんが(重力がかかっているなら転がるのは当然だと思いますが)……
玉の移動をtransform.positionの変更で行なっていますが、これは「座標を変える」処理なのでこのようなゲームではあまり適切ではないように思います。
移動が物理演算依存なのでrigidbody.AddForce(力を加える)を使用する方が良いかと思います。
参考:「はじめてのUnity-玉転がしゲーム

投稿2017/06/12 01:42

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miiichat

2017/06/12 01:52

回答ありがとうございました! sceneをリロードすると直りました。 「落ちなくても押される」とは坂と坂の間に水平なcubeを入れましたがそのうえも押されてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問